home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-01-04 | 134.1 KB | 2,708 lines |
- ATI Technologies Super VGA Chip Sets.
-
- 18800 V3. ROM BIOS label: V3M
- 18800-1 100pin V4. ROM BIOS label: V4M
- 18800-1 100pin V5. Uses 18810 Dot Clock Chip. ROM BIOS label: V5M
- 28800-2 V6. VGA Wonder+
- 28800-4 V7. VGA Wonder XL
- 28800-5 VGA Wonder (1MB)/XL, Graphics/Ultra (VGA chip)
- 28800-6 160pin VGA Wonder XL24
- 38800-1 Mach 8. 8514/Ultra and Graphics/Ultra (8514/A chip)
- 68800-3 208pin Mach 32. Graphics Ultra Pro/+ Combined 8514/A and
- VGA chip.
- 68800-6 208pin As -3, but with memory mapped registers
- 68800-LX 208pin As -6, but only supports DRAM (no VRAM)
- 68800-AX 208pin As -6, but supports PCI bus
- 88800GX 208pin Mach64 (there is also an 88800CX ??)
-
- Support chips:
- ATI18810 Clock chip for 18800-1, 28800
- ATI18811 Clock chip for 68800
- ATI18820 Bus Mouse Controller
-
- ATI Prism Elite uses Trident 8800CS chips.
-
- ATI VGA Wonder XL can use the Sierra HiColor RAMDAC.
-
- Note that the base register for the ATI extended registers should be read from
- the word at 0C000h:10h (NOT on Mach64), as ATI reserves the right to change
- the base address. However all current implementations use 1CEh.
-
- Note: The ATI chips handles the indexed registers slightly differently
- from other VGA chips, as the index register must be written before
- each read or write of the associated data register.
-
-
- 1CEh index 80h (R/W): ATI Register 0 (ATI00) (68800 only)
- bit 0-7 Scratch Pad
-
- 1CEh index 81h (R/W): ATI Register 1 (ATI01) (68800 only)
- bit 0-7 Scratch Pad
-
- 1CEh index 82h (R/W): ATI Register 2 (ATI02) (68800 only)
- bit 0-7 Scratch Pad
-
- 1CEh index 83h (R/W): ATI Register 3 (ATI03) (68800 only)
- bit 0-7 Scratch Pad
-
- 1CEh index 84h (R/W): ATI Register 4 (ATI04) (68800 only)
- bit 0-7 Scratch Pad
-
- 1CEh index 85h (R/W): ATI Register 5 (ATI05) (68800 only)
- bit 0-3 CPUCLK Select. Selects the number of CPU clocks for the basic
- command cycle in the local bus.
- 4-5 Delay Memory Read Ready Control.
- 0: Read Ready signal is 1 MCLK before memory data is available
- 1: Read Ready signal is simultaneously with the memory data.
- 2: Read Ready signal is 1 MCLK after memory data is available
- 3: Read Ready signal is 2 MCLKs after memory data is available
- 6 Delay latch memory read data by one half memory clock cycle in VGA
- planar mode.
- 7 Cursor Blink Rate Select. Half normal rate if set.
-
- 1CEh index 86h (R/W): ATI Register 6 (ATI06) (68800 only)
- bit 0-2 Text mode character FIFI depth
- 4-6 Number of CPUCLK cycles in the local bus BIOS ROM read cycle.
-
- 1CEh index A0h (R/W): ATI Register 20 (ATI20) (28800 +)
- bit 0-3 (68800 only) Display FIFO. Selects the video FIFO depth where the
- Display Request changes from low to high priority in the memory
- controller. Default is 8
- 4 Enable 16bit ROM if set
- 5-6 (68800 only) RAMDAC Extended Address Select. Connected to RS2 and
- RS3 on the RAMDAC, giving access to all 8 or 16 registers on
- advanced RAMDACs.
-
- 1CEh index A1h (R/W): ATI Register 01h (28800 +)
- bit 0-2 Reserved
- 3-4 Digital Monitor Detection
- 5-7 Reserved
-
- 1CEh index A2h (R/W): ATI Register 02h (28800 +)
- bit 0-7 Reserved
-
- 1CEh index A3h (R/W): ATI Register 23 (ATI23) (28800 +)
- bit 0-2 16bit ROM Access. ROM access time (Single 16bit ROM).
- 3 Cursor Start Address bit 17. Bit 17 of the Cursor Start Address
- (3d4h index 0Eh,0Fh) Bit 16 is in
- 4 Display start address bit 17. Bit 17 of the Display Start Address
- (3d4h index 0Ch,0Dh). Bit 16 is in 1CEh index B0h bit 6.
- 5-7 Reserved
-
- 1CEh index A4h (R/W): ATI Register 24 (ATI24) (28800 +)
- bit 0-3 ROM page 0
- 4-7 ROM page 1
-
- 1CEh index A5h (R/W): ATI Register 25 (ATI25) (28800 +)
- bit 0-3 ROM page 2
- 4-7 ROM page 3
-
- 1CEh index A6h (R/W): ATI Register 26 (ATI26) (28800 +)
- bit 0 (68800) Display Enable Skew-by-2. If set skews the "Display Enable"
- signal by 2 character clocks.
- 3 (68800) General Purpose R/W Bit.
- 6 (68800) Solid Underline. Set for solid underline in monochrome text,
- clear for dashed underline.
- 7 Forced read 3CCh. If set forces GENMO[1-7] to 0 while reading 3CCh
-
- 1CEh index A7h (R/W): ATI Register 07h (28800 +)
- bit 0 Enable True color mode
- 1,3 True Color DAC installed
- 2 Reserved
- 4-5 Forced pixel data to high
- 6 Skew display enable
- 7 Enable divide by 3 clock
-
- 1CEh index A8h (R): ATI Register 28 (ATI28) (28800-5 +)
- bit 0-1 Vertical Line Counter bit 8-9
- 2-7 Reserved
-
- 1CEh index A9h (R): ATI Register 29 (ATI29) (28800-5 +)
- bit 0-7 Vertical Line Counter bit 0-7
- Note: The VGA Wonder documents A8h as the low byte and A9h as the high byte,
- but at least for the 28800-6 and Mach32 A8h IS the low byte.
-
- 1CEh index AAh (R/W): ATI Register 0Ah (28800-5 +)
- bit 0-3 (R) Chip Revision ID. 6 for the 28800-6, (5 for the 28800-5 ??)
- 4 Address/Data bus configuration
- 5-7 Reserved
-
- 1CEh index ABh (R/W): ATI Register 2B (ATI2B) (28800 +)
- bit 0 Video Zero Wait-State Enable. Enables zero wait state support for
- video memory write if set
- 1 BIOS Zero Wait-State Enable. Enables zero wait state for BIOS read
- if set
- 2 (68800) I/O Zero Wait State Enable if set
- 3 Select secondary display
- (68800) Double Scan Lock Enable. Locks 3d4h index 9 bit 7 if set
- 4 (28800-6 +) Lock DAC write. If set locks the RAMDAC write signal
- 5 (28800-6) Zero wait state enable
- 6 Restrict CPU access
- (68800) Memory Data Delay Latch in Text Mode. If set latching of
- memory data from the DRAM port is delayed by 1/2 MCLK in text modes
- 7 Video Data Delay Latch in Text Mode. If set internal latching of
- video data from the serial port is delayed by 1/2 MCLK in text modes
-
- 1CEh index ACh (R/W): ATI Register 0Ch (28800-6 +)
- bit 0 Enable Linear Addressing
- 1-5 Reserved
- 6 Enable 1024x768x16 color planar pass through internal palette
- 7 Reserved
-
- 1CEh index ADh (R/W): ATI Register 2D (ATI2D) (28800-6 +)
- bit 0 (28800-6) Extended Horizontal Total bit 8. Bits 0-7 are in 3d4h
- index 0. Only used if bit 3 is set
- 1 (28800-6) Extended CRTC Start Blanking bit 8. Bits 0-7 are in 3d4h
- index 2. Only used if bit 3 is set
- 0-1 (68800) Extended Cursor Address. Bits 18-19 of the Cursor Address
- register (3d4h index 0Eh,0Fh). Bit 16 is in 1CEh index B0h bit 2
- and bit 17 in 1CEh index A3h bit 3.
- 2 (28800-6) Extended CRTC Horizontal Retrace Start bit 8. Bits 0-7 are
- in 3d4h index 4. Only used if bit 3 is set
- 3 (28800-6) Extended CRTC Registers Enable
- 2-3 (68800) Extended Start Address. Bits 18-19 of the Display Start
- Address register (3d4h index 0Ch,0Dh). Bits 16 is in 1CEh index B0h
- bit 6 and bit 17 in 1CEh index A3h bit 4
- 4-7 Extended Character Map Address. Bits 16-19 of the address where the
- font maps are stored. See 3C4h index 3.
-
- 1CEh index AEh (R/W): ATI Register 2E (ATI2E) (68800 only?)
- bit 0-1 (68800) Write/Single bank bit 4-5
- 2-3 (68800) Read bank bit 4-5
- 4 If sets locks the CPUCLK select bits (1CEh index 85h bits 0-3).
- 5-7 Horizontal Sync Skew relative to pixel clock.
-
- 1CEh index AFh (R/W): ATI Register 0Fh
- bit 0-7 Reserved
-
- 1CEh index B0h (R/W): ATI Register 30 (ATI30)
- bit 0 Skews Display Enable by one character clock if set
- 1 (188xx) Enable 256 color modes
- (288xx) Enable alt Video memory organization in text modes
- 2 (188xx) Enable 256 color modes
- (28800 +) Extended Cursor Start Address. Bit 16 of the Cursor Start
- Address register (3d4h index 0Eh,0Fh). Bit 17 is in 1CEh index A3
- bit 3.
- 3 (188xx) Enable 8 CRT accesses for each CPU access
- 3-4 (28800-4 +) Video memory: 0=256k, 1=1M, 2=512K
- 4 (28800-2) Video memory: 0=256k, 1=512k
- 5 (28800 +) ATI-Ext 256 Color Mode Select. Enables extended 256 color
- modes if set
- 6-7 (188xx) Display Start Address bit 16-17
- 6 (28800 +) Extended Display Start Address. Bit 16 of the Display
- Start Address register (3d4h index 0Ch,0Dh). Bit 17 is in 1CEh
- index A3h bit 4
- 7 (28800 +) Enable Higher bandwidth in VRAM
-
- 1CEh index B1h (R/W): EGA Compatibility and Double Scanning Enable
- bit 0 EGA I/O Address Compatibility. Forces all VGA I/O addresses to be
- EGA compatible if set
- 1 EGA Register Compatibility. Forces all VGA registers to be EGA
- compatible if set
- 2 General purpose read/write bit
- 3-5 Scan Function. Double scanning/3 of 4 scanning enable
- 0: Normal
- 1: Enable double scanning in graphics mode
- 2: Enable 3 of 4 scanning in graphics mode
- 5: Enable double scanning in text mode
- 6: Enable 3 of 4 scanning in text mode
- 6 Vertical Timings Divide by 2. If set divides the Vertical timing
- parameters by 2
- 7 Reserved
-
- 1CEh index B2h (R/W): Memory Page Select
- bit 0 (18800) Enable interlace if set
- (18800-1) reserved
- (28800 +) Read bank no bit 3
- 1-3 (18800-1) Write/Single bank no.
- 1-4 (28800 +) Write/Single bank no
- (18800) Bank no. in 64 chunks
- 5 (18800) Enable internal DIP switch settings (EGA mode)
- 6 (18800) External clock select. Bit 2 of the clock select. Bits 0-1
- are in 3C2h/3CCh bits 2-3. Clocks in MHz:
- 0: 50.175, 1: 56.644, 3: 44.900, 4: 44.900, 5: 50.175, 7: 36.000
- 7 (18800) Reserved
- 5-7 (18800-1 +) Read bank no
-
- 1CEh index B3h (R/W): ATI Register 33 (ATI33)
- bit 0 EEPROM data input
- 1 EEPROM clock source
- 2 Enable EEPROM interface
- 3 EEPROM chip select. Enables EEPROM if set
- 4 (18800?) Enable PS/2 decoding
- (18800-1) Disable memory beyond 256K if set
- 5 (28800 +) XOR with input status bit HSYNC to select 8 or 16 bit
- video memory operation
- (68800) ISA bus 8/16bit Video Memory Operation. Selects 8 or 16 bit
- Video memory operation depending on whether input pin RMCE1B is
- grounded through a 2K Ohm resistor.
- If grounded: 1: 8bit, 1: 16bit
- If NOT grounded: 0: 16bit, 1: 8bit
- 6 (18800) Enable 1 CRT access to 1 CPU access
- (18800-1 +) 4bit PEL, 1bit/map. Enables 1024x768 16 color planar
- pixel mode if set. If set 16 pixels are loaded and displayed per
- character clock rather than the normal 8, also the CRTC offset
- register (3d4h index 13h) is in units of 4 bytes rather than 2.
- 7 Double Scan Enable. Enable double scanning for 200 line modes if set
- Note: This register should not be modified on revision 1 chips.
-
- 1CEh index B4h (R/W): Emulation Control
- bit 0 Enable CGA emulation if set
- 1 Enable Hercules emulation if set
- 2 Write Protect CRT09[0-4,7]. If set write protects 3d4h index 9 bits
- 0-4 and 7
- 3 Write Protect Vertical Timing registers. If set write protects 3d4h
- index 6, 7 bits 0-3 and 5-7, 9 bit 5, 10h, 11h bits 0-3, 12h, 15h
- and 16h
- 4 Write Protect CRT0A-CRT0B. If set write protects the Cursor Start
- and End registers (3d4h index 0Ah and 0Bh).
- 5 Write Protect CRT08[0-6], CRT14[0-4]. If set write protects
- registers 3d4h index 8 bits 0-6 and index 14h bits 0-4
- 6 Write Protect CRT00-CRT07. If set write protects 3d4h index 0-7
- except index 7 bit 4
- 7 CRT11[7] Override. If set 3d4h index 11h bit 7 is ignored and does
- not lock other CRTC registers.
-
- 1CEh index B5h (R/W): ATI Register 35 (ATI35)
- bit 0 Blanking Signal Select. Select display enable as the blanking signal
- if set
- 1 Blanking Polarity Invert. Inverts the polarity of the blanking
- signal BLANKB if set
- 2 Display Enable Signal Skewed. Skews the Display Enable signal by one
- PEL clock period if set
- 3 Select Map 3 as programmable character generator
- (68800) General Purpose Read/Write bit.
- 4 (18800-1 +) Enable 8 simultaneous fonts if set. Background is then
- always 0, and bit 4-7 of the attribute selects the font.
- The font location in plane 2 (sorted by attribute bit 4-7) is:
- 0: 0K, 1: 32K, 2: 8K, 3: 40K, 4: 16K, 5: 48K, 6: 24K, 7: 56K
- (68800) Anti-alias Fonts Enable.
- 5 Disable Cursor Blinking if set
- 6 CGA Cursor Start/End Address. If set adds 5 to the cursor start and
- end registers for CGA emulation.
- 7 Select undivided input clock as pixel clock
- (68800-6) VGA Overscan Output Enable. If set generates an overscan
- signal that can be used by the RAMDAC to select a color outside
- the normal 256color palette (overlay registers in the RAMDAC).
-
- 1CEh index B6h (R/W): High Resolution Enable
- bit 0 (28800-4 +) CRTC Display Address Counter Enable. Set to enable
- >16bit CRTC address counter. If clear the display wraps at 256K
- (planar modes - 4x64K) or 512K (packed modes - 8x64K).
- 1 Enable 640x400 Hercules emulation if set
- 2 Enable linear addressing in 256color modes if set
- 3 Select 4 color high res modes
- (68800) General Read/Write bit.
- 4 16 Color Enable, APA Mode. Set to enable 16 color high resolution
- modes. If set the horizontal timings (3d4h index 0-5) are doubled.
- 5 Enable vertical interrupts if set
- 6 (18800 - 28800-3) Enable linear addressing
- (?) Select composite sync for output
- (68800) Linear Addressing, Text Mode. Enables linear addressing in
- text modes if set.
- 7 Screen Blanking Disable. Disable blanking screen blank in CGA and
- Hercules emulation if set
-
- 1CEh index B7h (R/W): ATI Register 37 (ATI37)
- bit 0 Status of ISA bus 16bit Operation Select.
- 16bit if set, 8bit if clear
- 1 (not 68800) PS/2 configuration
- 2 (not 68800) Video memory is DRAM if set, VRAM if clear
- 3 Output Data for the EEPROM input
- 4 Status of ROM Address Decode. Decode enabled if set
- 5 (not 68800) Select I/O address at 3xxh or 2xxh
- 6-7 Reserved
-
- 1CEh index B8h (R/W): Write Protect and Clock Select
- bit 0 Write Protect ATTR00-0F. If set write protects the Palette registers
- (3C0h index 0-0Fh).
- 1 Write Protect ATTR11. If set write protects the Overscan register
- (3C0h index 11h).
- 2 Write Protect VGA Registers. If set write protects all VGA registers
- except the Display Start Address (3d4h index 0Ch,0Dh) and the Cursor
- Start and End registers (3d4h index 0Ah and 0Bh)
- 3 Write Protect Register at I/O Port 3C2h if set
- 4 (not 68800) Lock horizontal sync polarity if set
- 5 (not 68800) Lock vertical sync polarity if set
- (68800) 640x300 Hercules Graphics Emulation. Enabled if set
- 6-7 (Not 68800) Divide Video Clock by: 0: 1, 1: 2, 2: 3, 3: 4
- 6 (68800) Clock Divider. If set divides the input Video Clock by 2.
- 7 (68800) General Purpose Read/Write bit
-
- 1CEh index B9h (R/W): ATI Register 39 (ATI39)
- bit 0 (?) Clock select
- 1 (18800-1 +) Select input to clock chip. See index BEh bit 4
- (68800) Documented as "General Purpose Read/Write bit", but is
- actually a Clock Select bit as for the earlier chips!
- 2-3 ROM address space.
- 0: 32k at C000h, 1: 28k at C000h, 2,3: 24k at C000h
- 4-5 Wait cycles for 16 bit ROM access:
- 0: 8 cycles, 1: 4 cycles, 2: 2 cycles, 3: none
- (68800) General Purpose Read/Write bits.
- 6 16bit I/O Operation. If set I/O operations are 16bits, 8bits if
- clear
- 7 Write Protect CRT18. If set write protects the Line Compare register
- (3d4h index 18h)
-
- 1CEh index BAh (R/W): ATI Register 3A (ATI3A)
- bit 0-2 (not 68800) Delay chain timing compensation for TTL monitors and
- 16color RGB simulation
- (68800) General Purpose Read/Write bits
- 3 (not 68800) Disable secondary Red output (for RGB monitors)
- 4 (not 68800) Enable EGA color simulation for RGB monitors
- 5 (not 68800) Enable monochrome grey scale circuit
- 6 reserved
- 7 (not 68800) Delay chain resolution compensation
-
- 1CEh index BBh (R/W): Input Status Register
- bit 0-3 Monitor Type:
- 0: EGA
- 1: PS/2 Analog Monochrome
- 2: TTL Monochrome
- 3: PS/2 Color
- 4: RGB Color
- 5: MultiSync
- 7: PS/2 8514
- 8: Seiko 1430
- 9: NEC Multisync 2A
- A: Crystalscan 860/Tatung 1439
- B: NEC Multisync 3D
- C: TVM 3M
- D: NEC MultiSync XL
- E: TVM 2A
- F: TVM 3A
- 4 (188xx) General read/write bit
- (28800 +) Bit 4 of the Monitor Type above
- 5 (188xx) Video memory is 512Kbytes if set, 256K else
- 6-7 Reserved
- 0-7 (68800) General Purpose Read/Write bits
- Note: this register is set by the BIOS
-
- 1CEh index BCh (R/W): ATI Register 3C (ATI3C)
- bit 0-7 reserved, must be 0
-
- 1CEh index BDh (R/W): EGA Switch Settings
- bit 0 Composite Sync Polarity Select.
- 2 (28800-5 +) 128K CPU Address. Enables A0000h-BFFFFh as one 128K page
- if set
- 3 Composite Sync Select. If set selects Composite Sync output, if
- clear Horizontal Sync.
- 4-7 EGA switch settings
-
- 1CEh index BEh (R/W): ATI Register E (not 18800)
- bit 0 R/W Vertical Display End Register. If set unlock Vertical Display
- End register (3d4h index 12h) even in Double Scan modes.
- 1 Interlace Operation. Set to enable interlace.
- 2 Select Internal EGA DIP Switches. If set use 1CEh index BBh bits
- 4-7, if clear use
- 3 Read/Write Paging Select. Selects Read/Write bank mode if set,
- single bank mode if clear
- 4 (18800-1 without 18810 Clock Chip (V4)) External clock select.
- Bit 2 of the clock select. Bits 0-1 are in 3C2h/3CCh bits 2-3.
- Clocks in MHz:
- 0: 50.175, 1: 56.644, 3: 44.900, 4: 44.900, 5: 50.175, 7: 36.000
- (18800-1 with 18810 Clock Chip, 28800 +) Clock Select
- BEh bit 4: B9h bit 1: 3C2h bit 3: 3C2h bit 2: Frequency:
- 0 0 0 0 42.954 MHz
- 0 0 0 1 48.771
- 0 0 1 0 Ext 0 (16.657)
- 0 0 1 1 36.000
- 0 1 0 0 50.350
- 0 1 0 1 56.640
- 0 1 1 0 Ext 1 (28.322)
- 0 1 1 1 44.900
- 1 0 0 0 30.240
- 1 0 0 1 32.000
- 1 0 1 0 37.500
- 1 0 1 1 39.000
- 1 1 0 0 40.000
- 1 1 0 1 56.644
- 1 1 1 0 75.000
- 1 1 1 1 65.000
- (68800) Documented as "General Purpose Read/Write bit", but is
- actually a Clock Select bit as for the earlier chips!
- 6 (not 68800) Enable 1024x768 16 color mode
- 7 (not 68800) Enable 1024x768 4 color mode
-
- 1CEh index BFh (R/W): Miscellaneous Register (not 188xx)
- bit 0 (68800) Disable Zero Wait State in planar modes if set
- 1-3 (68800) Delay in number of MCLK cycles before latching first CPU
- data in 16bit planar modes.
- 6 (288xx) ROM page address bit
- 7 (288xx) Alternate memory organisation for graphics enable
-
- 23Ch (R): Port A (18820 only)
- bit 0-3 The data selected by 23Eh bits 5-6.
- 5 Clear if the right mouse button is down.
- 6 Clear if the middle mouse button is down.
- 7 Clear if the left mouse button is down.
- Note: The registers 23Ch-23Fh are relocated to 238h-23Bh if the secondary
- mouse port address is selected. This can be done in software or jumper.
-
- 23Ch (R/W): Port A (288xx)
- bit 0-2 Internal Register Index. Selects the register to access at 23Dh
- 7 Set to reset the chip, clear for normal operation.
- Note: The 28800 series has built in Inport Mouse support.
- Note: The registers 23Ch-23Fh are relocated to 238h-23Bh if the secondary
- mouse port address is selected. This is done in software.
-
- 23Ch index 0 (R/W): Mouse State (288xx)
- bit 0 Set if right mouse button is down
- 1 Set if middle mouse button is down
- 2 Set if left mouse button is down
- 3 Set if the right mouse button state has changed since Hold was set
- 4 Set if the middle mouse button state has changed since Hold was set
- 5 Set if the left mouse button state has changed since Hold was set
- 6 Set if the mouse has moved
- 7 Set if packet complete
- Note: this register is valid when 23Ch index 7 bit 5 is set
-
- 23Ch index 1 (R/W): X Movement Count (288xx)
- bit 0-7 X-Count. Two's complement movement X count
- Note: this register is valid when 23Ch index 7 bit 5 is set
-
- 23Ch index 2 (R/W): Y Movement Count (288xx)
- bit 0-7 Y-Count. Two's complement movement Y count
- Note: this register is valid when 23Ch index 7 bit 5 is set
-
- 23Ch index 7 (R/W): Mode (288xx)
- bit 0-2 Timer Select. Sets the maximum interrupt rate. Interrupts only occur
- if the button state has changed or the mouse has moved.
- 0: 0Hz (Never), 1: 30Hz, 2: 50Hz, 3: 100Hz, 4: 200Hz, 6: Always
- 3 Data Interrupt Enable. If set an interrupt will be generated when
- the button state has changed or the mouse has moved.
- 4 Timer Interrupt Enable. If set interrupts will be generated at the
- frequency specified in bits 0-2.
- 5 Hold. Should be set before reading index 0-2 and reset after.
- 6-7 Mode. 0: Quadrature Mouse.
-
-
- 23Dh (R/W): Port B (18820 only)
- Note: only used to detect I/O address
-
- 23Eh (R/W): Port C (18820 only)
- bit 0 (R) Set if IRQ5 selected
- 1 (R) Set if IRQ4 selected
- 2 (R) Set if IRQ3 selected
- 3 (R) Set if IRQ2 selected
- 4 Interrupts disabled if set, enabled if clear
- 5-6 Counter Read Select. Selects the data to return in 23Ch bits 0-3
- 0: Low nibble of X Counter
- 1: High nibble of X Counter
- 2: Low nibble of Y Counter
- 3: High nibble of Y Counter
- 7 Hold. Set this bit at the beginning of the Interrupt Service Rutine,
- clear after reading counter.
-
- 23Eh (R): Port C (288xx)
- Bit 0-7 Alternates between DEh and 11h on each read.
-
- 23Fh (R/W): Port D (18820 only)
- bit 0-7 Used to control timer, must be 91h
-
- 2EEh (W): Overscan Color Register (Mach32)
- bit 0-7 OVERSCAN_COLOR_8. Overscan color for 4 and 8bit modes
-
- 2EFh (W): 24Bit Blue Overscan Component (Mach32)
- bit 0-7 OVERSCAN_BLUE_24. Blue Overscan color for 16 and 24bit modes
-
- 3C0h index 00h-0Fh (R/W): Palette index register
- bit 4-5 Mode 67h Palette set selection. These bits should be the same in all
- 16 attribute registers.
- Value Pixel=0 1 2 3
- 0 Black White Grey Bright White
- 1 Black Green Red Yellow
- 2 Black Cyan Red White
- 3 Black Cyan Magenta White
- Note: this is special to mode 67h only!!
-
- 3CEh index 50h (R/W): (Mach32/64 only?)
- bit 0-7 Lower 8 bits of the ATI extended register base I/O address
-
- 3CEh index 51h (R/W): (Mach32/64 only?)
- bit 0-3 Bits 8-11 of the ATI extended register base I/O address. Bits 0-7
- are in 3CEh index 50h.
- 6-7 Selects the index range for the extended registers within the ATI
- extended registers. 0: 00h-3Fh, 1: 40h-7Fh, 2: 80h-BFh, 3: C0h-FFh
- Note: Usually these registers are programmed to place the extended registers
- at 1CEh with index 80h-BFh. (50h = CEh and 51h = 81h).
-
- 6EEh (W): 24Bit Green Overscan Component (Mach32)
- bit 0-7 OVERSCAN_GREEN_24. Green Overscan color for 16 and 24bit modes
-
- 6EFh (W): 24Bit Red Overscan Component (Mach32)
- bit 0-7 OVERSCAN_RED_24. Red Overscan color for 16 and 24bit modes
-
- 0AEEh W(W): Cursor Offset Low (Mach32)
- bit 0-15 CURSOR_OFFSET_LO. Lower bits of the address (in DWORDs) of the
- cursor map in video memory. The upper bits are in 0EEEh. The cursor
- map is a 64x64 pixel map with two bits per pixel.
- Pixel: Pixel Color:
- 0 Cursor Color 0
- 1 Cursor Color 1
- 2 Transparent (Screen data)
- 3 Complement (XOR cursor)
-
- 0EEEh W(W): Cursor Offset High (Mach32)
- bit 0-3 CURSOR_OFFSET_HI. Upper bits of the address of the cursor map. Low
- bits are in 0AEEh.
- 15 CURSOR_ENA. Set to enable the Hardware Cursor
-
- 12EEh W(R): Configuration Status 1 Register (Mach8)
- bit 0 CLK_MODE. Set to use clock chip, clear to use crystals.
- 1 BUS_16. Set for 16bit bus, clear for 8bit bus
- 2 MC_BUS. Set for MicroChannel bus, clear for ISA/EISA bus
- 3 EEPROM_ENA. EEPROM enabled if set
- 4 DRAM_ENA. Set for DRAM, clear for VRAM.
- 5-6 MEM_INSTALLED. Video memory. 0: 512K, 1: 1024K
- 7 ROM_ENA. Set is ROM is enabled
- 8 ROM_PAGE_ENA. Set if ROM paging enabled
- 9-15 ROM_LOCATION. If bit 2 and 3 are 0 the ROM will be at this location:
- 0: C000h, 1: C080h, 2: C100h, .. 127: FF80h (unlikely)
-
- 12EEh W(R): Configuration Status 1 Register (Mach32)
- bit 0 8514_ONLY. If set the VGA is disabled, if clear VGA and 8514 enabled
- 1-3 BUS_TYPE. 0: ISA, 1:EISA, 2:16bit MCA, 3: 32bit MCA, 4: Local Bus
- (386SX), 5: Local Bus (386DX), 6: Local Bus (486), 7: PCI
- 4-6 MEM_TYPE. Memory type:
- 0: 256Kx4 DRAM
- 1: 256Kx4 VRAM with 512bit serial transfer
- 2: (68800-3) 256Kx4 VRAM with 256bit serial transfer
- (68800-6 +) 256Kx16 VRAM with 256bit serial transfer
- 3: 256Kx16 DRAM
- Remaining only for 68800-6 and up:
- 4: 256Kx4 Graphics DRAM
- 5: 256Kx4 VRAM with 512bit split transfer
- 6: 256Kx16 VRAM with 256bit spilt transfer
- 7 CHIP_DIS. Chip disabled if set
- 8 TST_VCTR_ENA. If set delay memory write data by 0.5 MCLK for test
- vector generation.
- 9-11 DACTYPE: Indicates the type of RAMDAC installed:
- 0: ATI 68830 (8bit i/f, 8 and 15/16bit modes)
- 1: SC1148x, IMS-G173,MU9c4870 (8bit i/f, 8 and 15/16bit modes)
- 2: ATI68875, Bt885, TLC34075 (24/32bit i/f, 8,15/16 and 24bit
- modes)
- 3: Bt47x, INMOS17x (8bit i/f, 8bit modes - standard DAC)
- 4: AT&T20c49x, Bt48x, IMS-G174, MU9c1880, MU9c4910, SC1502x
- (8bit i/f, 8,15/16 and 24bit modes)
- 5: ATI68860 (24/32/64bit i/f, 8,15/16 and 24bit modes)
- Only for 68800-AX
- 12 MC_ADR_DECODE. Enable internal microchannel address decode if set,
- external if clear
- 13-15 CARD_ID. Used for multiple controllers
-
- 12EE W(W): Horizontal Cursor Position Register (Mach32)
- bit 0-10 H_CUR_POSN. Cursor X-position in units of 8 pixels relative to the
- address in 2AEEh & 2EEEh
-
- 16EEh (R): Configuration Status 2 Register (Mach8)
- bit 0 SHARE_CLOCK. If set the Mach8 shares clock with the VGA
- 1 HIRES_BOOT. Boot in hi-res mode if set
- 2 EPROM_16_ENA. Adapter configured for 16bit ROM if set
- 3 WRITE_PER_BIT. Write masked VRAM operations supported if set
- 4 FLASH_ENA. Flash page writes supported if set
-
- 16EEh W(R): Configuration Status 2 Register (Mach32)
- bit 0 (68800-3 only) SLOW_SEQ_EN. Use 2 clock sequencer timing if set,
- 1 clock sequencer timing if clear
- 1 MEM_ADDR_DIS. Disable FE0000h-FFFFFFh if set
- 2 ISA_16_ENA. (ISA bus only) 16bit ISA bus if set, 8bit if clear
- 3 KOR_TXT_MODE_ENA. Korean character font support enabled if set
- 4-5 LOCAL_BUS_SUPPORT.
- 1: LOCAL2# local bus signal selected
- 2: LOCAL3# local bus signal selected
- 3: LOCAL1# local bus signal selected
- 6 LOCAL_BUS_CONFIG_2. LBus_2 configuration (non-multiplexed) if set,
- LBus_1 configuration (multiplexed) if clear
- 7 LOCAL_BUS_RD_DLY_ENA. If set read data is held for 1 bus clock after
- RDY
- 8 LOCAL_DAC_EN. Disable local decode of RAMDAC write in local bus
- systems if set
- 9 LOCAL_RDY_EN. Enable 1 bus clock RDY delay for write if clear
- 10 EEPROM_ADR_SEL. Decode BIOS EEPROM at C0000h-C7FFFh if set, at
- E0000h-E7FFFh if clear
- 11 GE_STRAP_SEL. (EISA bus) Enable POS register function if set, always
- enable chip if clear. (Local Bus) Enable local decode of 102h
- register if clear
- 12 VESA_RDY. Enable VESA compliant RDY format if clear
- 13 (68800-6 +) Z4GBYTE. Enable 4GN memory aperture if set, 128MB if
- clear
- 14 (68800-6 +) LOC2_MDRAM. Supports 2MB DRAM in LBus_2 configuration if
- set, 1MB if clear
-
- 16EE W(W): Vertical Cursor Position Register (Mach32)
- bit 0-11 V_CUR_POSN. Cursor Y-position relative to the address in 2AEEh &
- 2EEEh
-
- 1AEEh W(R): FIFO Test Data Register (Mach32)
- bit 0-15 FIFO test data
-
- 1AEEh (W): Cursor Color 0 Register (Mach32)
- bit 0-7 CUR_COLOR_0. Cursor Color 0. In 16 and 24 bit modes this is the Blue
- component of Cursor Color 0
-
- 1AEFh (W): Cursor Color 1 Register (Mach32)
- bit 0-7 CUR_COLOR_1. Cursor Color 1. In 16 and 24 bit modes this is the Blue
- component of Cursor Color 1
-
- 1EEEh (W): Horizontal Cursor Offset Register (Mach32)
- bit 0-5 CUR_H_OFFSET. First horizontal pixel actually used within the 64x64
- cursor map.
-
- 1EEFh (W): Vertical Cursor Offset Register (Mach32)
- bit 0-5 CUR_V_OFFSET. Number of lines shown in the cursor
-
- 22EEh (R/W): PCI Control Register (68800-AX)
- bit 0-2 DAC_RW_WS. RAMDAC read/write wait states
- 3 TARGET_ABORT_EN. Enable Target Abort Cycle if set
- 4 PCI_DAC_DLY. If set increases the hold time of the register select
- signals relative to the falling edge of the DAC write signal
- 5 DAC_SNOOP_EN. Enables snooping on DAC read if set
- 6 FAST_BURST. Enables 0 wait states on aperture Burst Write if set
- 7 FAST_MEM_IO. Fast memory mapped I/O read/write enabled if set
-
- 26EEh (W): CRT Pitch Register (Mach8/32)
- bit 0-7 Width of logical scanlines in units of 8 pixels.
- (Mach8) When 4AE8h or BEE8h index 5 is written this register is
- reset to 128 (=1024 pixels)
-
- 2AEEh W(W): CRT Offset Low Register (Mach8/32)
- bit 0-15 Lower 16 bits of the CRT Offset. The upper bits are in 2EEEh.
- The start of the displayed image in units of 4 bytes.
-
- 2EEEh W(W): CRT Offset High Register (Mach8/32)
- bit 0-3 Upper bits of the CRT Offset. Lower bits are in 2AEEh.
-
- 32EEh W(R/W): Local Control Register (Mach32)
- bit 0 MED_NON-PAGE-CYC. Enables 6 clock non-page cycle
- 1 LONG_NON-PAGE-CYC. Enables 7 clock non-page cycle
- 2 SHORT_CAS_PULSE_EN. Enables 1/2 memory clock CAS precharge time
- 3 DAC_BLANK_ADJ. Enables DAC to be clocked on positive clock edge
- 4 FIFO_TEST. Enables testing of FIFO
- 5-6 (68800-3) FIFO_TIMING_ADJ. Enables filtering of 1 clock IOW low or
- high pulse
- 5 (68800-6 +) MEM_MAP_ENA. Enables Memory Mapped registers
- The memory mapped registers are located in the last 512 bytes of
- the aperture (1MB or 4MB). 4 bytes are allocated to each register
- Memory Address: I/O register:
- xFFE00 02E8h
- xFFE04 06E8h
- <Other xxE8h registers>
- xFFEFC FEE8h
- xFFF00 02EEh
- xFFF04 06EEh
- <Other xxEEh registers>
- xFFFFC FEEEh
- 6 (68800-6 +) LOC_BIOS_ENA. Enables Local Bus BIOS ROM Decode
- 7-9 ROM_WAIT. Number of ROM wait states. Default is 7.
- 10-11 MEM_R_DELAY. Additional wait states for memory reads. Default is 3
- 12-15 (not 68800-AX on PCI bus) LOCAL_BUS_WAIT. Minimum wait states for
- local bus. Default is 15
- (68800-AX on PCI bus) 8514IO_WAIT. Number of wait states for I/O
- read/write operations.
-
- 36EEh (W): FIFO Options Register (Mach8)
- bit 0 W_STATE_ENA. If clear wait states disabled unless FIFO is full, if
- set wait states are generated if the FIFO is at least half full.
- This bit does not affect wait states for 8514/A compatible registers
- 1 HOST_8_ENA. Clear for 16bit I/O operations, set for 8bit I/O
-
- 36EEh W(R/W): Miscellaneous Register (Mach32)
- bit 0 W_STATE_ENA. If clear wait states disabled unless FIFO is full, if
- set wait states are generated if the FIFO is at least half full.
- This bit does not affect wait states for 8514/A compatible registers
- 1 HOST_8_ENA. Clear for 16bit I/O operations, set for 8bit I/O
- 2-3 MEM_SIZE_ALIAS. Video Memory: 0: 512K, 1: 1MB, 2: 2MB, 3: 4MB
- 4 DISABLE_VGA. VGA controller enabled if clear.
- 5 16_BIT_IO. 16bit 8514 I/O enabled if set.
- 6 DISABLE_DAC. Disables local DAC if set
- 7 DLY_LATCH_ENA. For VRAM this is the serial data delay latch enable,
- for DRAM the memory data delay latch enable for bits 0-63.
- 8 TEST_MODE. Extends draw engine page write cycle to 3 clocks for test
- purposes.
- 10 (68800-6 +) BLK_WR_ENA. Block Write Enabled if set. Utilises the
- block write mode of most VRAMs which expands all '1' data bits to
- a specified color in the corresponding nibbles. '0 bits are no-ops
- Only supported if the memory type is 5 or 6.
- 11 (68800-6 +) 64_DRAW_ENA. 64bit Draw Enable if set.
- 12 MEM_DATA_SEL. If set video memory read data is latched on the rising
- edge of CASB, if clear it flows through.
- 13 DLY_LATCH_ENA. Memory data delay latch enable for data bits 0-63
- 14 LATCH_FULL_ENA. Memory Data Latch full clock pulse enable
-
- 3AEEh (R): FIFO Test Tag Register (Mach32)
- bit 0-4 FIFO test data
-
- 3AEEh W(W): Extended Cursor Color 0 Register (Mach32)
- bit 0-7 EXT_CUR_COL_0_G. Green component of the Cursor Color 0 in 16 and
- 24bit modes
- 8-15 EXT_CUR_COL_0_R. Red component of the Cursor Color 0 in 16 and
- 24bit modes
-
- 3EEEh W(W): Extended Cursor Color 1 Register (Mach32)
- bit 0-7 EXT_CUR_COL_1_G. Green component of the Cursor Color 1 in 16 and
- 24bit modes
- 8-15 EXT_CUR_COL_1_R. Red component of the Cursor Color 1 in 16 and
- 24bit modes
-
- 42EEh (R/W): Memory Boundary Register (Mach32)
- bit 0-3 MEM_PAGE_BNDRY. Division between VGA and 8514 memory in 256K units.
- 1: VGA can write in the first 256K, 8514 in all but the first 256K
- 2: VGA can write in the first 512K, 8514 in all but the first 512K
- etc.
- 4 MEM_BNDRY_ENA. If set the VGA and 8514 can only write in each their
- own memory area, if clear each can write in all of memory.
-
- 46EEh W(W): Shadow Set Control Register (Mach8/32)
- bit 0 LOCK_CRT_PARAMS. Locks the display mode CRT parameters - Double Scan
- and Interlace.
- 1 LOCK_Y_CONTROL. Locks 22E8h bits 1-2
- 2 LOCK_H_PARAMS. Locks the Horizontal Sync parameters: Position, Width
- and Total.
- 3 LOCK_H_DISP. Locks Horizontal Displayed
- 4 LOCK_V_PARAMS. Locks Vertical Sync parameters: Width, Start and
- Total.
- 5 LOCK_V_DISP. Locks Vertical Displayed
- 6 (Mach32) LOCK_OVERSCAN. Locks the selection of shadow overscan
- register set in 1024x768 resolution.
-
- 4AEEh W(R/W): Clock Select Register (Mach8/32)
- bit 0 PASS_THROUGH. If set video output id's from the 8514, if clear from
- either the internal VGA or from the Feature Connector.
- 2-5 CLK_SEL. Clock Select lines to the 1881x clock chip.
- 6 CLK_DIV. If set divide clock by 2.
- 7 Refresh. Enables video memory refresh counter if clear.
- 8-11 VFIFO_DEPTH. When the Video FIFO has less than this number of
- entries refill will start. Only used for DRAM systems, however
- performance at high resolutions can be optimized regardlessly.
- 12 COMPOSITE_SYNC.
- (Mach8) If set Composite Sync used with the primary CRT register
- set, if clear Composite Sync used when programming CRT Shadow Set
- 1 or 2.
- (Mach32) Set for Composite Sync, clear for separate Sync.
- Note: in Mach8 mode this register is Read Only.
- Writing to this register switches the CRT controller to ATI mode,
- writing to 4AE8h switches to 8514 mode.
-
- 52EEh W(R/W): Scratch Pad 0 Register (Mach32)
- bit 0-6 ROM address: 0: C000h, 1: C080h, 2: C100h ...
- 8-15 Scratch Pad
-
- 56EEh W(R/W): Scratch Pad 1 Register (Mach32)
- bit 0-15 Scratch Pad
-
- 5AEEh W(W): Shadow Set Register (Mach8/32)
- bit 0-1 SHADOW_SET. Selects the current CRT register set:
- 0: Primary CRT register set
- 1: Shadow set 1 (usually 640x480)
- 2: Shadow set 2 (usually 1024x768)
- 8-9 (68800-6 +) LOAD_SRC/DST. Determines whether the source and
- destination offset/pitch registers are loaded together:
- 0: Load Destination and Source Offset/Pitch registers together
- 1: Load Destination Offset/Pitch register only
- 2: Load Source Offset/Pitch register only
-
- 5EEEh W(R/W): Memory Aperture Configuration Register (Mach32)
- bit 0-1 MEM_APERT_SEL. Aperture: 0: Disabled, 1: 1MB, 2: 4MB
- PCI configuration does not support 1MB aperture
- 2-3 MEM_APERT_PAGE. Memory aperture page selection in 1MB aperture mode.
- 4-15 MEM_APERT_LOC. Address of aperture in 1MB steps between 0 and 4GB
- 8-15 MEM_APERT_LOC. Address of aperture in 1MB steps between 0 and 128MB
- Note: bit 8-15 is used as the Aperture Address except for PCI systems and
- multiplexed local bus systems (16EEh bit 13 set) where bit 4-15 are used
-
- 62EEh W(R): Extended Graphics Engine Status Register (Mach32)
- bit 0-3 CLIP_OVERRUN. Clip Overrun
- 8 CLIP_INSIDE. Clip Inside
- 9-12 CLIP_FLAGS. For each bit: 0: outside scissor, 1: inside ?
- 13 GE_ACTIVE. The Graphics Engine is busy if set.
- 14 EE_DATA_IN. EEProm data in
- 15 POINTS_OUTSIDE. Points Outside.
-
- 62EEh W(W): Horizontal Overscan Register (Mach32)
- bit 0-3 Overscan Width - left side in character units
- 4-7 Overscan Width - right side in character units
- 8-10 (68800-6 +) H_SYNC_DELAY. Horizontal Sync Delay in pixels (for
- 1280x1024 multiplexed pixel modes in units of 2 pixels)
- 12 (68800-6 +) OSCAN_INV. Inverts Overscan Polarity if set
- 13 (68800-6 +) SYN_CONT_SEL. If set bits 14-15 controls HSYNC and VSYNC
- 14 (68800-6 +) HSYN_CONT. If bit 13 is set this bit controls the HSYNC
- signal
- 15 (68800-6 +) VSYN_CONT. If bit 13 is set this bit controls the VSYNC
- signal
-
- 66EEh W(W): Vertical Overscan Register (Mach32)
- bit 0-7 Overscan height - top in lines
- 8-15 Overscan height - bottom in lines
-
- 6AEEh W(R/W): Maximum Wait-States Register (Mach8, 68800-3/6/LX)
- bit 0-3 Q_WSTATES. Max number of wait-states (in units of 0.25 clocks) that
- the engine can generate during I/O writes. 0 = No Wait states
- Set to 0Ch on hardware reset
- 4-7 ROM_SPEED. Number of wait states inserted by the engine when the ROM
- BIOS is read. Set to 0Fh on hardware reset. 0 = No Wait states.
- 8 LINE_OPT_ENA. Horizontal Line draw optimisations enabled if clear.
- Must be disabled during degree-mode linedraws to keep the ERR_TERM
- register 8514 compatible.
- 9 (Mach8) IOR16_ENA. 16bit I/O reads enabled if clear.
- 10 (Mach8) PASSTHROUGH_OVERRIDE. Clear if passthrough connection made,
- set if not (no VGA sync detected). Must be set correctly for the
- DAC to function.
-
- 6AEEh W(R/W): Memory Aperture Configuration Register (68800-AX)
- bit 10 F_APERT_ENA. Enables zero waitstate aperture write if set
- 11 FIFO_RD_AHEAD. Enables Read Ahead for aperture read operation if set
- Speeds up sequential reads
- 12 SCLK_DLY. Pixel Stream 1 SCLK Delay if set
- 13 DEC_BURST_ENA. Enables Decrement Burst if set
- 14 INC_BURST. Increments Burst if set, decrements if clear
- 15 PCI_TIMEOUT_DIS. Enables bus timeout on burst read/writes if clear
- Note: This register available in PCI configurations only
-
- 6EEEh W(W): Graphics Engine Offset Low Register (Mach8/32)
- bit 0-15 Lower bits of the Graphics Engine Offset. Upper bits are in 72EEh.
- Video buffer address in units of 4 bytes
-
- 72EEh W(R): Bounds Accumulator Left Register (Mach8/32)
- bit 0-15 BOUNDS_LEFT. The lowest X coordinate written through the linedraw
- register. Reset to 2047 when A2EEh bit 8 is set
-
- 72EEh (W): Graphics Engine Offset High Register (Mach8/32)
- bit 0-3 Upper 4 bits of the Graphics Engine Offset. Lower bits are in 6EEEh
-
- 76EEh W(R): Bounds Accumulator Top Register (Mach8/32)
- bit 0-15 BOUNDS_TOP. The lowest X coordinate written through the linedraw
- register. Reset to 2047 when A2EEh bit 8 is set
-
- 76EEh (W): Graphics Engine Pitch Register (Mach8/32)
- bit 0-7 GE_PITCH. Width of the display buffer in units of 8 pixels.
-
- 7AEEh (W): Extended Graphics Engine Configuration Register (Mach8)
- bit 0 EE_DATA_OUT
- 1 EE_CLK
- 2 EE_CS
- 3 ALIAS_ENA
- 4 Z1280
- 7 EE_SELECT
- Note: This register is used in 8bit mode (card in an 8bit slot or the 8/16bit
- jumper set for 8bit)
-
- 7AEEh W(R): Bounds Accumulator Right Register (Mach8/32)
- bit 0-15 BOUNDS_RIGHT. The highest X coordinate written through the linedraw
- register. Reset to -2048 when A2EEh bit 8 is set
-
- 7AEEh W(W): Extended Graphics Engine Configuration Register (Mach8/32)
- bit 0-2 MONITOR_ALIAS. Alternate monitor ID for 8514/A application use
- 3 ALIAS_ENA. If set read of the Subsystem Status register (42E8h)
- returns the monitor ID in bit 0-2 rather than the actual ID.
- 4-5 (Mach32) PIXEL_WIDTH. Number of bits per pixel
- 0: 4bits/pixel(bpp), 1: 8bpp, 2: 16bpp, 3: 24bpp
- 16 and 24 bits per pixel only supported if we have at least 1MB
- and the DAC can handle it.
- 6-7 (Mach32) 16_BIT_COLOR_MODE. 16bit pixel format:
- 0: (5,5,5) Red = bit 10-14, Green = bit 5-9, Blue = bit 0-4
- 0: (5,6,5) Red = bit 11-15, Green = bit 5-10, Blue = bit 0-4
- 0: (6,5,5) Red = bit 10-15, Green = bit 5-9, Blue = bit 0-4
- 0: (6,6,4) Red = bit 10-15, Green = bit 4-9, Blue = bit 0-3
- 8 (Mach32) MULTIPLEX_PIXELS. If set 4 pixels are sent to the DAC in
- parallel
- 9 (Mach32) 24_BIT_COLOR_CONFIG. If set 24bit pixel occupy 4 bytes and
- bit 10 selects the unused byte within the pixel, if clear 24bit
- pixel occupy 3 bytes.
- 10 (Mach32) 24_BIT_COLOR_ORDER. Selects the order the colors are stored
- in 24bit pixels. If set Red is stored first, if clear blue first.
- Bit10 Bit9 Red Green Blue
- 0 0 Byte 2 Byte 1 Byte 0
- 0 1 Byte 3 Byte 2 Byte 1
- 1 0 Byte 0 Byte 1 Byte 2
- 1 1 Byte 0 Byte 1 Byte 2
- 11 (68800-6 +) DISPLAY_PIXEL_SIZE. Set to load display pixel size.
- If both bit 11 and 15 are 0 both pixel sizes are loaded
- 12-13 (Mach32) DAC_EXT_ADDR. Connected to RS2 and RS3 on the DAC.
- 12 (Mach8) EE_DATA_OUT. Data output for the EEPROM
- 13 (Mach8) EE_CLK. Clock signal for the EEPROM
- 14 (Mach32) DAC_8_BIT_EN. Set for 8bit DAC operation, clear for 6bit
- (Mach8) EE_CS. Chip select line for the EEPROM
- 15 (68800-6 +) DRAW_PIXEL_SIZE. Set to load drawing pixel size.
- If both bit 11 and 15 are 0 both pixel sizes are loaded
- (Mach8) EE_SELECT. Must be set to enable read/writing the EEPROM
- Note: On the Mach32 this register can be read at 8EEEh
-
- 7EEEh W(R): Bounds Accumulator Bottom Register (Mach8/32)
- bit 0-15 BOUNDS_BOTTOM. The highest Y coordinate written through the linedraw
- register. Reset to -2048 when A2EEh bit 8 is set
-
- 7EEEh W(W): ROM/EEPROM/DAC Control Register (Mach32)
- bit 0 EE_DATA_OUT. Data output to the EEPROM
- 1 EE_CLK. Clock signal for the EEPROM
- 2 EE_CS. Chip select for EEPROM
- 3 EE_SELECT. Enables the external EEPROM for reading and writing if
- set
- 4-7 ROM_PAGE_SEL. Selects a 2K page within the 32K ROM
- 8-9 BLANK_ADJUST. For type 2 DACs (ATI68875) only. Delays BLANK by 1 or
- 2 PCLKs
- 10-11 PIXEL_DELAY. Adjusts pixel data skew from PCLK
- 12 PASSTHRU_OVERIDE. Allows the pixel clock to remain active even when
- PASSTHROUGH is 0
- 13-15 CARD_SELECT. Allows selection of cards in multicard systems. The
- card is active if the card is strapped to this value or zero.
-
- 82EEh (R/W): Pattern Data Index Register (Mach8/32)
- bit 0-7 (68800-3) Selects 1 of 18 pattern data registers
- 0-4 (68800-6 +) Selects one of 24 pattern data registers
- Note: the data is written to 8EEEh. Each write increments this index
- Index 0-0Fh are the color pattern data registers, 10h-11h (10h-17h for
- the 68800-6 and later) are the mono pattern data registers.
-
- 8EEEh W(R): Read Extended Graphics Engine Configuration Register (Mach32)
- bit 0-2 MONITOR_ALIAS. Alternate monitor ID for 8514/A application use
- 3 ALIAS_ENA. If set read of the Subsystem Status register (42E8h)
- returns the monitor ID in bit 0-2 rather than the actual ID.
- 4-5 PIXEL_WIDTH. Number of bits per pixel
- 0: 4bits/pixel(bpp), 1: 8bpp, 2: 16bpp, 3: 24bpp
- 16 and 24 bits per pixel only supported if we have at least 1MB
- and the DAC can handle it.
- 6-7 16_BIT_COLOR_MODE. 16bit pixel format:
- 0: (5,5,5) Red = bit 10-14, Green = bit 5-9, Blue = bit 0-4
- 0: (5,6,5) Red = bit 11-15, Green = bit 5-10, Blue = bit 0-4
- 0: (6,5,5) Red = bit 10-15, Green = bit 5-9, Blue = bit 0-4
- 0: (6,6,4) Red = bit 10-15, Green = bit 4-9, Blue = bit 0-3
- 8 MULTIPLEX_PIXELS. If set 4 pixels are sent to the DAC in parallel
- 9 24_BIT_COLOR_CONFIG. If set 24bit pixel occupy 4 bytes and bit 10
- selects the unused byte within the pixel, if clear 24bit pixel occupy
- 3 bytes.
- 10 24_BIT_COLOR_ORDER. Selects the order the colors are stored in 24bit
- pixels. If set Red is stored first, if clear blue first.
- Bit10 Bit9 Red Green Blue
- 0 0 Byte 2 Byte 1 Byte 0
- 0 1 Byte 3 Byte 2 Byte 1
- 1 0 Byte 0 Byte 1 Byte 2
- 1 1 Byte 0 Byte 1 Byte 2
- 11 (68800-6 +) DISPLAY_PIXEL_SIZE. Set to load display pixel size.
- If both bit 11 and 15 are 0 both pixel sizes are loaded
- 12-13 DAC_EXT_ADDR. Connected to RS2 and RS3 on the DAC.
- 14 DAC_8_BIT_EN. Set for 8bit DAC operation, clear for 6bit
- 15 (68800-6 +) DRAW_PIXEL_SIZE. Set to load drawing pixel size.
- If both bit 11 and 15 are 0 both pixel sizes are loaded
- Note: This register is written at 7AEEh
-
- 8EEEh W(W): Color/Monochrome Pattern Data Registers (Mach8/32)
- bit 0-15 Pattern data. 82EEh selects the pattern data registers to write to.
-
- 92EEh W(R): ROM Page Select & EEPROM Control Register (Mach32)
- bit 4-7 ROM_PAGE_SEL. Selects a 2K page within the 32K ROM
- 8-9 BLANK_ADJUST. For type 2 DACs (ATI68875) only. Delays BLANK by 1 or
- 2 PCLKs
- 10-11 PIXEL_DELAY. Adjusts pixel data skew from PCLK
-
- 96EEh W(R/W): Bresenham Count Register (Mach8/32)
- bit 0-10 COUNT. The largest of the absolute values of delta X and delta Y
-
- 9AEEh W(R): Extended FIFO Status Register (Mach8/32)
- bit 0-15 Each bit is set if the corresponding FIFO location is occupied and
- clear if it is free. Bit 15 will clear first.
-
- 9AEEh (W): Linedraw Index Register (Mach8/32)
- bit 0-2 Determines the type of line data written to FEEEh.
- 0: Set current X, 1: Set current Y, 2: Line end X, 3: Line end Y,
- 4: set current X, 5: Set current Y.
- Writing to FEEEh increments this index, except that 3 wraps to 2 and
- 5 to 4 so that a polyline can be output by setting this index to 0
- and then writing the coordinates to FEEEh.
-
- A2EEh W(R/W): Linedraw Options Register (Mach8/32)
- bit 1 POLY_MODE. Clear for normal linedraw, set for polygon linedraw mode.
- 2 LAST_PEL_OFF. Set if the last pixel of a line should not be drawn.
- 3 DIR_TYPE. If set lines are drawn in the direction set by bits 5-7
- and of the length in the Bresenham Count Register (96EEh), if clear
- according to the Bresenham parameters
- 5-7 (bit 3=1) DEGREE. Direction of the line in degrees
- 0: 0, 1: 45, 2: 90, 3: 135, 4: 180, 5: 225, 6: 270, 7: 315
- 5 (bit 3=0) XDIR. Set to draw to the right (increase X)
- 6 (bit 3=0) YMAJOR. Set if delta Y > delta X (numerically)
- 7 (bit 3=0) YDIR. Set to draw downwards (increase Y)
- 8 BOUNDS_RESET. If set the accumulator registers are reset to
- Left=2047, Top=2047, Right=-2048, Bottom=-2048
- 9-10 CLIP_MODE.
- 0: Clip exception disabled
- 1: Stroked line segments
- 2: Polygon boundary lines
- 3: Patterned lines
-
- A6EEh W(W): Destination Start X Register (Mach8/32)
- bit 0-10 DEST_X_START. Starting X coordinate for the destination blit
-
- AAEEh W(W): Destination X End Register (Mach8/32)
- bit 0-10 DEST_X_END. Ending X coordinate of each row of the destination blit
-
- AEEEh W(W): Destination Y End Register (Mach8/32)
- bit 0-10 DEST_Y_END. Ending line of the destination blit for VRAM to VRAM
-
- B2EEh W(R): R Horizontal Displayed & Total Register (Mach32)
- bit 0-7 H_DISP. Pixels displayed horizontally, in units of 8 pixels.
- This field is written at 6E8h
- 8-15 H_TOTAL. Total horizontal screen width in units of 8 pixels.
- This field is written at 2E8h
-
- B2EEh W(W): Source X Start Register (Mach8/32)
- bit 0-10 SRC_X_START. First pixel of the blit area (except first row)
-
- B6EEh (R): Horizontal Sync Start Register (Mach32)
- bit 0-7 H_SYNC_STRT. HSync start in units of 8 pixels.
- Note: This register is written at 0AE8h
-
- B6EEh (W): Background Function Register (Mach8/32)
- bit 0-4 ALU_BG_FN. Background ALU function code
-
- BAEEh (R): Horizontal Sync Width Register (Mach32)
- bit 0-4 H_WIDTH. Width of the sync in units of 8 pixels
- 5 H_POLARITY. Set for negative Horizontal sync polarity, clear for
- positive Horizontal sync
- Note: This register is written at 0EE8h
-
- BAEEh (W): Foreground Function Register (Mach8/32)
- bit 0-4 ALU_FG_FN. Foreground ALU function code.
-
- BEEEh W(W): Source X End Register (Mach8/32)
- bit 0-10 SRC_X_END. Last pixel of the blit source area
-
- C2EEh W(R): Vertical Total Register (Mach32)
- bit 0-11 V_TOTAL. Total number of scanlines in a frame.
- Note: This register is written at 12E8h
-
- C2EEh (W): Source Y Direction Register (Mach8/32)
- bit 0 SRC_Y_DIR. Direction of drawing. Set for top-to-bottom, clear for
- bottom-to-top.
-
- C6EEh W(R): Vertical Displayed Register (Mach32)
- bit 0-11 V_DISP. Number of scanlines displayed (-1).
- Note: This register is written at 16E8h
-
- C6EEh W(W): Extended Short Stroke Vector Transfer Register (Mach8/32)
- bit 0-3 Length of the major axis
- 4 Set for drawing, clear for moves
- 5-7 Direction in degrees:
- 0: 0, 1: 45, 2: 90, 3: 135, 4: 180, 5: 225, 6: 270, 7: 315
- 8-15 Same as bits 0-7, but another vector.
- Note: this is similar to 9EE8h
-
- CAEEh W(R): Vertical Sync Start Register (Mach32)
- bit 0-11 V_SYNC_STRT. Vertical sync start in scanlines
- Note: This register is written at 1AE8h
-
- CAEEh W(W): Scan To X Register (Mach8/32
- bit 0-10 SCAN_TO_X. Can be used for fast polygon scan conversion and
- horizontal lines. Drawn from current X position to this position.
- Left edge drawn, right edge not drawn.
-
- CEEEh W(R): Vertical Line Counter Register (Mach32)
- bit 0-10 VERT_LINE_CNTR. Vertical Line Counter
-
- CEEEh W(W): Data Path Configuration Register (Mach8/32)
- bit 0 READ_WRITE. If set data is written to the drawing trajectory, if
- clear read from it.
- 1 POLY_FILL_MODE. If set Polygon-fill blit mode is enabled, blit
- source mechanism is triggered and VRAM source blit data is used as
- the polygon fill mask, if clear polygon-fill blit mode is disabled
- Cleared at the start of each row of the blit.
- 2 READ_MODE. If set read host data is monochrome, if clear color.
- 4 DRAW. Enable Draw if set.
- 5-6 MONO_SRC. Monochrome source is:
- 0: Always "1"
- 1: Mono Pattern register
- 2: Pixel Transfer register
- 3: VRAM blit source
- 7-8 BG_COLOR_SRC. Background Color Source select.
- 0: Background color register
- 1: Foreground color register
- 2: Pixel transfer register
- 3: VRAM blit source
- 9 DATA_WIDTH. Width of the data transferred through the CPU Data
- Transfer register. 0: 8bit, 1: 16bit
- Should be set in 16bit/pixel modes.
- 12 LSB_FIRST. If set the CPU Data Transfer register is "Intel little
- endian style" (least significant byte first), if clear in "Motorola
- big endian style" (most significant byte first).
- In Mach8 mode this bit is ignored if bit 9 is 0.
- 13-15 FG_COLOR_Src. Foreground color source select.
- 0: Background color register
- 1: Foreground color register
- 2: Pixel transfer register
- 3: VRAM blit source
- 5: Color pattern shift register
-
- D2EEh W(R): Vertical Sync Width Register (Mach32)
- bit 0-4 V_WIDTH. Width of Vsync pulse in scanlines
- 5 V_POLARITY. Set for negative Vsync, clear for positive Vsync
- Note: This register is written at 1EE8h
-
- D2EEh W(W): Pattern Length Register (Mach8/32)
- bit 0-4 PATT_LENGTH. Number of pixels (-1) in the pattern
- 7 8x8 Mono Pattern Enable. If set bits 0-4 are ignored and Pattern
- Data index 10h-17h are used as an 8x8 rectangular pattern
- 15 8x8 Block Write Mono Pattern Enable. If set the 8x8 pattern
- described in bit 7 is used as a transparency mask for the write
-
- D6EEh (W): Pattern Index Register (Mach8/32)
- bit 0-4 PATT_INDEX. Selects the first pixel in the color or mono pattern for
- the destination
-
- DAEEh W(R): Read Source X Register (Mach8/32)
- bit 0-10 R_SRC_X. Source current X. This register is written at 8EE8h
-
- DAEEh W(W): Extended Left Scissor Register (Mach8/32)
- bit 0-11 EXT_SCISSOR_L. Left scissor (-2048..2047)
-
- DEEEh W(R): Read Source Y Register (Mach8/32)
- bit 0-10 R_SRC_Y. Source current Y. This register is written at 8AE8h
-
- DEEEh W(W): Extended Top Scissor Register (Mach8/32)
- bit 0-11 EXT_SCISSOR_T. Top scossor (-2048..2047)
-
- E2EEh W(W): Extended Right Scissor Register (Mach8/32)
- bit 0-11 EXT_SCISSOR_R. Right scissor (-2048..2047)
-
- E6EEh W(W): Extended Bottom Scissor Register (Mach8/32)
- bit 0-11 EXT_SCISSOR_B. Bottom Scissor (-2048..2047)
-
- EEEEh W(W): Destination Color Compare Function Register (Mach8/32)
- bit 3-5 DEST_CMP_FN_4/8. 4/8bit mode destination compare function code
- 0: False
- 1: True
- 2: Destination pixel >= DEST_CMP_CLR
- 3: Destination pixel < DEST_CMP_CLR
- 4: Destination pixel != DEST_CMP_CLR
- 5: Destination pixel = DEST_CMP_CLR
- 6: Destination pixel <= DEST_CMP_CLR
- 7: Destination pixel > DEST_CMP_CLR
- The pixels where the comparison is true are NOT updated.
- 6-8 DEST_CMP_FN_B. 16bit blue destination compare function code
- 9-11 DEST_CMP_FN_G. 16bit green destination compare function code
- 12-14 DEST_CMP_FN_R. 16bit red destination compare function code
-
- F2EEh W(R/W): Destination Color Compare Function Register (68800-6 +)
- bit 0-15 Destination Color Compare Mask
-
- FAEEh W(R): Chip ID Register (68800-6 +)
- bit 0-9 CHIP_CODE. Identifies the chip version:
- 017h 68800-AX
- 177h 68800-LX
- 2F7h 68800-6
- The 68800-3 appears to return 0 for this field (undocumented)
- 10-11 CHIP_CLASS.
- 12-15 CHIP_REV.
-
- FEEEh W(W): Linedraw Register (Mach8/32)
- bit 0-15 Line data. 9AEEh determines which type of line data is written
-
-
-
- Bank Switching
-
- Bank switching can use either one single bank register or two
- separate read and write bank registers (18800-2 and 28800 Only).
- Banks map to 64k boundaries.
-
- Reserved locations in the ROM (typically starting at C000h:0):
-
- $10 2 bytes ATI Register (usually $1CE).
- $31 9 bytes '761295520' ID's ATI product
- $40 2 bytes '31' = ATI VGA Wonder/Mach series
- '32' = ATI EGA Wonder 800+
- '34' = ATI VGA Basic-16
- '22' = ATI EGA Wonder
- ?+'3' = ATI Basic-16
- $42 1 byte Bit 0 Set for 16-bit boards
- 1 Mouseport present if set
- 2 Use hardware detection to detect mouse port if set
- 3 Microchannel if set, PC/AT else
- 4 Use clock chip if set
- 7 Use C000:0000 to D000:FFFF with 16 bit ROM if set
- $43 1 byte Gate revision.
- ' ' (20h) = Mach64 (see Mach64 section below)
- '1' (31h) = 18800 (V3),
- '2' (32h) = 18800-1 (V4/V5),
- '3' (33h) = 28800-2 VGA Wonder+ (V6).
- '4' (34h) = 28800-4 VGA Wonder (1MB)
- '5' (35h) = 28800-5 VGA Wonder 1MB/XL
- '6' (36h) = 28800-6 VGA Wonder XL
- 'a' (61h) = 68800 Mach-32
- 'c' (63h) = 68800 Mach-32 - Which version ?
- $44 1 byte Bit 0 If clear the board can support 70Hz
- non-interlaced refresh
- 1 If set the board supports Korean characters in VGA
- mode
- 2 If set the board uses 45MHz memory clock, if clear
- 40MHz
- 3 If clear the board supports zero wait states.
- 4 If set the board uses paged ROMs.
- 6 If clear there is 8514/A hardware on board (Graphics
- Ultra)
- 7 If set there is a 32K color DAC on board.
- $4C 1 byte Major Bios version
- $4D 1 byte Minor Bios version
-
- $64 (Mach32) Far call entry point to Load Shadow Set function
- AH = 0
- $68 (Mach32) Far call entry point to Set Mode function
- AL = 00h Load VGA passthrough mode
- 01h Load low resolution mode
- 02h Load high resolution mode
-
- $6C (Mach32) Far call entry point to Query function
- AL = 00h Query information structure in bytes
- Returns size in AX
- 01h Query device long
- ES:BX -> Device Status Table to be filled out
- OFFSET TYPE Description:
- 00h WORD Size of structure in bytes
- 02h BYTE Revision of structure
- 03h BYTE Number of mode tables
- 04h WORD Offset of mode tables
- 06h BYTE Size of mode tables in bytes
- 07h BYTE ASIC Revision
- 08h BYTE Status Flags
- Bit 0 Host data transfers forced to 8bit
- 09h BYTE VGA Type. 0: Disabled, 1: Enabled
- 0Ah BYTE VGA Boundary. 0: 0K, 1: 256K, 2: 512K,
- 3: 768K, 4: 1M, 0FFh: Full access
- 0Bh BYTE Memory Size.
- 0: 256K, 1: 512K, 2: 1M, 3: 2M, 4: 4M
- 0Ch BYTE DAC Type
- 0: ATI68830
- 1: SC1148x
- 2: ATI68875, TLC34075
- 3: Bt476,Bt478
- 4: Bt481,Bt482
- 5: ATI68860 (68800-AX only)
- 0Dh BYTE Memory Type: See 12EEh bits 4-6 for details
- 0Eh BYTE Bus Type:
- 0: 16bit ISA
- 1: EISA
- 2: 16bit Micro Channel
- 3: 32bit Micro Channel
- 4: Local bus (386SX)
- 5: Local bus (386DX)
- 6: Local bus (486)
- 0Fh BYTE Monitor Alias
- 10h WORD Shadow 1 Status
- 12h WORD Shadow 2 Status
- 14h WORD Aperture Address (0MB - 4095MB)
- 16h BYTE Aperture Configuration
- Bit 0-1 0: Disabled, 1: 1MB, 2: 4MB
- 17h BYTE Mouse Configuration
- Bit 0-1 Mouse Address Selection
- 0: Disabled
- 1: Secondary Address
- 2: Primary Address
- 2-3 Interrupt handler selection
- 0: IRQ5, 1: IRQ4, 2: IRQ3, 3: IRQ2
- 18h BYTE DAC Support
- Bit 0 Supports (664) if set
- 1 Supports (655) if set
- 2 Supports (565) if set
- 3 Supports (555) if set
- 5 Supports 32bpp if set
- 6 Supports BGR if set
- 7 Supports RGB if set
- A number of mode tables follows:
- OFFSET TYPE Description:
- 00h WORD Number of pixels horizontally
- 02h WORD Number of lines vertically
- 04h BYTE Maximum pixel depth
- 05h BYTE Status Flags
- Bit 0 Nonlinear Y addressing mode if set
- 6 MUX mode if set
- 7 PCLK divided by 2 if set
- 06h DWORD Reserved
- 0Ah WORD (4AEEh) CLOCK_SELECT
- 0Ch BYTE (02E8h) H_TOTAL
- 0Dh BYTE (06E8h) H_DISP
- 0Eh BYTE (0AE8h) H_SYNC_STRT
- 0Fh BYTE (22E8h) DISP_CNTL
- 10h BYTE (0EE8h) H_SYNC_WID
- 11h BYTE (1EE8h) V_SYNC_WID
- 12h WORD (12E8h) V_TOTAL
- 14h WORD (16E8h) V_DISP
- 16h WORD (1AE8h) V_SYNC_STRT
- 18h WORD (62EEh) HORIZONTAL_OVERSCAN
- 1Ah WORD (66EEh) VERTICAL_OVERSCAN
- 1Ch BYTE (02EEh) OVERSCAN_COLOR_8
- 1Dh BYTE (02EFh) OVERSCAN_COLOR_BLUE
- 1Eh BYTE (06EEh) OVERSCAN_COLOR_GREEN
- 1Fh BYTE (06EFh) OVERSCAN_COLOR_RED
- 02h Query device short
- Returns:
- AL = ASIC revision
- AH = Aperture Configuration
- BX = Aperture Address
- CL = Mouse Configuration
- CH = DAC type
-
- $70 (Mach32) Far call entry point to Accelerator service function
- AH = 00h Reset accelerator
- 01h Set DAC to default colors
- 02h EEPROM services
- AL = 00h Read from EEPROM (returns result in AX)
- 01h Write to EEPROM
- BX = EEPROM word address
- DX = Data to write
-
- EEPROM Map (Mach32):
- Word: Bits: Description
- 00h 0-15 EEPROM Write Counter
- 01h 0-7 Int Handler Select.
- 20h: IRQ5, 28h: IRQ4, 30h: IRQ3, 38h: IRQ2
- 8-15 Mouse Address Select
- 00h: Disabled, 08h: Secondary Address, 18h: Primary Address
- 02h 0 ROM 16bit access enabled if set
- 1 Zero Waitstate ROM Enabled if set
- 2 Zero Waitstate RAM Enabled if set
- 3 VGA bus I/O is 16bit if set, 8bit if clear
- 4 Power Up Font. 0: 8x14 or 9x14, 1: 8x16 or 9x16
- 5 Dual Monitor Enable
- 6-7 Mono Color Select
- 0: White, 1: Green, 2: Amber
- 8-15 Power Up Video Mode:
- 03h VGA Color - secondary
- 05h VGA mono - secondary
- 07h VGA lores Color - primary
- 09h VGA hires Color - primary
- 0Bh VGA mono - primary
- 12h EGA lores Color - secondary
- 13h EGA hires Color - secondary
- 15h EGA mono - secondary
- 17h EGA lores Color - primary
- 19h EGA hires Color - primary
- 1Bh EGA mono - primary
- 20h CGA
- 30h Hercules 720x348
- 40h Hercules 640x400
- 03h 0-3 EEPROM table revision number
- 14 Korean BIOS support
- 15 Scrolling Fix enable
- 04h 0-15 Custom Monitor Indices
- 05h 0-2 Monitor Alias
- 3 Alias Enable
- 4-6 VGA Boundary. 0: Shared, 1: 256K, 2: 512K, 4: 1MB
- 8-13 Monitor Code
- 14-15 Host Data Transfer Width. 0: Auto Select, 1: 16bit, 2: 8bit
- 3: 8bit host data/16bit other
- 06h 0-3 Aperture Size. 0: Disabled, 1: 1MB, 2: 4MB
- 4-15 Aperture Location in Mbytes
- 07h 0 640x480 72Hz enable
- 1 Use Stored Parameters for 640x480
- 8-15 Offset to 640x480 table in WORDs
- 08h 0 800x600 95Hz (interlaced) enable
- 1 800x600 89Hz (interlaced) enable
- 2 800x600 56Hz enable
- 3 800x600 60Hz enable
- 4 800x600 70Hz enable
- 5 800x600 72Hz enable
- 7 Use Stored Parameters for 800x600
- 8-15 Offset to 800x600 table in WORDs
- 09h 0 1024x768 87Hz (interlaced) enable
- 1 1024x768 60Hz enable
- 2 1024x768 70Hz enable
- 3 1024x768 72Hz enable
- 4 1024x768 66Hz enable (not active)
- 7 Use Stored Parameters for 1024x768
- 8-15 Offset to 1024x768 table in WORDs
- 0Ah 0 1280x1024 87Hz (interlaced) enable
- 1 1280x1024 95Hz (interlaced) enable
- 7 Use Stored Parameters for 1280x1024
- 8-15 Offset to 1280x1024 table in WORDs
- 0Bh 0 1120x750 enable
- 1 1152x900 enable
- 7 Use Stored Parameters for alternate modes
- 8-15 Offset to alternate table in WORDs
- 0Dh-1Bh CRT Parameter Table 1
- 1Ch-2Ah CRT Parameter Table 2
- 2Bh-39h CRT Parameter Table 3
- 3Ah-48h CRT Parameter Table 4
- 49h-57h CRT Parameter Table 5
- 58h-66h CRT Parameter Table 6
- 67h-75h CRT Parameter Table 7
- 7Eh 8-10 DAC Type. See 12EEh bit 9-11 for details
- 11-13 Memory Size. See 12EEh bit 4-6 for details
- 14 VGA enable
- 7Fh 0-15 EEPROM Checksum
-
- CRT Table structure:
- Word: Bits: Description
- 00h 0-3 Clock Chip Sel
- 4-5 Clock Div
- 6 CRTC Usage. Set to use all CRTC parameters in EEPROM, clear to
- only use sync polarities
- 7 Dot Clock Selects.
- 0: Use default dot clock
- 1: Use user supplied dot clock
- 8 Parm Type. Set if WORDs 1-9 are 8514 data, clear if VGA data
- 9-11 Maximum Pixel Depth. 0: 8bits/pixel, 1: 16b/p, 2: 24b/p
- 12 MUX Mode
- 13 Interlace
- 14 Horizontal Sync Polarity
- 15 Vertical Sync Polarity
- If WORD 00h bit 8 is clear (VGA data):
- 01h 0-7 Video Mode Sel 2
- 8-15 Video Mode Sel 1
- 02h 0-7 Video Mode Sel 4
- 8-15 Video Mode Sel 3
- 03h 0-7 Vertical Total (3d4h index 6)
- 8-15 Horizontal Total (3d4h index 0)
- 04h 0-7 Horizontal Retrace End (3d4h index 5)
- 8-15 Horizontal Retrace Start (3d4h index 4)
- 05h 0-7 Vertical Retrace End (3d4h index 11h)
- 8-15 Vertical Retrace Start (3d4h index 10h)
- 06h 0-7 Horizontal Blank End (3d4h index 3)
- 8-15 Horizontal Blank Start (3d4h index 2)
- 07h 0-7 Vertical Blank End (3d4h index 16h)
- 8-15 Vertical Blank Start (3d4h index 15h)
- 08h 0-7 Maximum Scanline (3d4h index 9)
- 8-15 CRT Overflow (3d4h index 18h)
- 09h 0-7 CRT Mode (3d4h index 17h)
- 8-15 Vertical Displayed (3d4h index 12h)
- If WORD 00h bit 8 is set (8514 data):
- 02h 0-7 VFIFO_16
- 8-15 VFIFO_24
- 03h 0-7 (06E8h) H_DISP
- 8-15 (02E8h) H_TOTAL
- 04h 0-7 (0EE8h) H_SYNC_WID
- 8-15 (0AE8h) H_SYNC_STRT
- 05h 0-15 (12E8h) V_TOTAL
- 06h 0-15 (16E8h) V_DISP
- 07h 0-15 (1AE8h) V_SYNC_STRT
- 08h 0-7 (22E8h) DISP_CNTL
- 8-15 (1EE8h) V_SYNC_WID
- 09h 0-15 (4AEEh) CLOCK_SEL
- Common data again:
- 0Ah 0-7 Offset to alternate table
- 8-13 Size of mode tables in WORDs
- 14 MUX flag
- 15 PCLK/2 flag
- 0Bh 0-15 (62EEh) HORIZONTAL_OVERSCAN
- 0Ch 0-15 (66EEh) VERTICAL_OVERSCAN
- 0Dh 0-7 (02EEh) OVERSCAN_COLOR_8
- 8-15 (02EFh) OVERSCAN_COLOR_BLUE
- 0Eh 0-7 (06EEh) OVERSCAN_COLOR_GREEN
- 8-15 (06EFh) OVERSCAN_COLOR_RED
-
-
-
- ** Mach64 Registers **
-
- The Mach64 engine is different from the Mach8/Mach32. The Mach64 has a number
- of 32bit registers. Most are I/O mapped at x2ECh (A2-A9 = 10111011), and all
- except the Config_Ctrl Register (6AECh) is memory mapped as a 1KB block,
- either at 0BFC00h or the last 1KB of the Linear Aperture.
-
- 6AECh D(R/W): Config_Ctrl
- bit 0-1 Cfg_Mem_Ap_Size. Linear Memory Aperture Size.
- 0: Disabled, 1: 4MB Aperture, 2: 8MB Aperture
- 2 Cfg_Mem_VGA_Ap_En. VGA Aperture enabled if set
- 4-13 Cfg_Mem_Ap_Loc. Linear Memory Aperture Location in units of 4MB.
- Bit 4 (lowest bit) is ignored for 8MB Apertures.
- 16-18 Cfg_Card_ID.
- 19 Cfg_VGA_Dis. VGA enabled if clear, disabled if set
-
- M+000h/02ECh D(R/W): Crtc_H_Total_Disp
- bit 0-7 Crtc_H_Total. Horizontal Total in character clocks (8 pixel units)
- 16-23 Crtc_H_Disp. Horizontal Display End in character clocks.
-
- M+004h/06ECh D(R/W): Crtc_H_Sync_Strt_Wid
- bit 0-7 Crtc_H_Sync_Strt. Horizontal Sync Start in character clocks (8
- pixel units)
- 8-10 Crtc_H_Sync_Dly. Horizontal Sync Start delay in pixels
- 16-20 Crtc_H_Sync_Wid. Horizontal Sync Width in character clocks
- 21 Crtc_H_Sync_Pol. Horizontal Sync Polarity
-
- M+008h/0AECh D(R/W): Crtc_V_Total_Disp
- bit 0-10 Crtc_V_Total. Vertical Total
- 16-26 Crtc_V_Disp. Vertical Displayed End
-
- M+00Ch/0EECh D(R/W): Crtc_V_Sync_Strt_Wid
- bit 0-10 Crtc_V_Sync_Strt. Vertical Sync Start
- 16-20 Crtc_V_Sync_Wid. Vertical Sync Width
- 21 Crtc_V_Sync_Pol. Vertical Sync Polarity
-
- M+010h/12ECh D(R/W): Crtc_Vline_Crnt_Vline
- bit 0-10 The line at which Vertical Line interrupt is triggered
- 16-26 (R) Crtc_Crnt_Vline. The line currently being displayed
-
- M+014h/16ECh D(R/W): Crtc_Off_Pitch
- bit 0-19 Crtc_Offset. Display Start Address in units of 8 bytes.
- 22-31 Crtc_Pitch. Display pitch in units of 8 pixels
-
- M+018h/1AECh D(R/W): Crtc_Int_Cntl
- bit 0 (R) Crtc_Vblank. Vertical Blank
- 1 Crtc_Vblank_Int_En. Vertical Blank interrupt enable
- 2 Crtc_Vblank_Int. When read returns the status of the Vertical Blank
- interrupt, when written (with a 1 ??) acknowledges the interrupt.
- 3 Crtc_Vline_Int_En. Vertical Line Interrupt enable.
- 4 Crtc_Vline_Int. When read returns the status of the Vertical Line
- interrupt, when written (with a 1 ??) acknowledges the interrupt.
- 5 (R) Crtc_Vline_Sync. 0: Even scan line, 1: Odd scan line
- 6 (R) Crtc_Frame. Interlaced frame. 0: Even frame, 1: Odd frame
-
- M+01Ch/1EECh D(R/W): Crtc_Gen_Cntl
- bit 0 Crtc_Dbl_Scan_En. Enables double scan
- 1 Crtc_Interlace_En. Enables interlace.
- 2 Crtc_Hsync_Dis. Disables Horizontal Sync output
- 3 Crtc_Vsync_Dis. Disables Vertical Sync output
- 4 Crtc_Csync_En. Enable composite sync on Horizontal Sync output
- 5 Crtc_Pic_By_2_En. CRTC advances 2 pixels per pixel clock
- 8-10 Crtc_Pix_Width. Displayed bits/pixel: 1: 4bpp, 2: 8bpp, 3: 15bpp
- (5:5:5), 4: 16bpp (5:6:5), 5: 24bpp(undoc), 6: 32bpp
- 11 Crtc_Byte_Pix_Order. Pixel order within each byte (4bpp).
- 0: High nibble displayed first, 1: low nibble displayed first
- 16-19 Crtc_Fifo_Lwm. Low Water Mark of the 16entry deep display FIFO.
- Only used in DRAM configurations. The minimum number of entries
- remaining in the FIFO before the CRTC starts refilling. Ideally
- should be set to the lowest number that gives a stable display.
- 24 Crtc_Ext_Disp_En. 1:Extended display mode , 0:VGA display mode
- 25 Crtc_En. Enables CRTC if set, resets if clear
-
- M+040h/22ECh D(R/W): Ovr_Clr
- bit 0-7 Ovr_Clr_8. Overscan color for 4bpp and 8bpp
- 8-15 Ovr_Clr_B. Blue component of the Overscan Color
- 16-23 Ovr_Clr_G. Green component of the Overscan Color
- 24-31 Ovr_Clr_R. Red component of the Overscan Color
-
- M+044h/26ECh D(R/W): Ovr_Wid_Left_Right
- bit 0-3 Ovr_Wid_Left. Left overscan width in character clocks
- 16-19 Ovr_Wid_Right. Right overscan width in character clocks
-
- M+048h/2AECh D(R/W): Ovr_Wid_Top_Bottom
- bit 0-7 Ovr_Wid_Top. Top overscan width in lines
- 16-23 Ovr_Wid_Bottom. Bottom overscan width in lines
-
- M+060h/2EECh D(R/W): Cur_Clr0
- bit 0-7 Cur_Clr0_8. Cursor color 0 for 4bpp and 8bpp modes
- 8-15 Cur_Clr0_B. Blue component of the Cursor Color 0
- 16-23 Cur_Clr0_G. Green component of the Cursor Color 0
- 24-31 Cur_Clr0_R. Red component of the Cursor Color 0
-
- M+064h/32ECh D(R/W): Cur_Clr1
- bit 0-7 Cur_Clr1_8. Cursor color 1 for 4bpp and 8bpp modes
- 8-15 Cur_Clr1_B. Blue component of the Cursor Color 1
- 16-23 Cur_Clr1_G. Green component of the Cursor Color 1
- 24-31 Cur_Clr1_R. Red component of the Cursor Color 1
-
- M+068h/36ECh D(R/W): Cur_Offset
- bit 0-19 Cur_Offset. Address of the cursor definition in units of 8 bytes
-
- M+06Ch/3AECh D(R/W): Cur_Horz_Vert_Posn
- bit 0-10 Cur_Horz_Posn. Cursor Horizontal Position
- 16-26 Cur_Vert_Posn. Cursor Vertical Position
-
- M+070h/3EECh D(R/W): Cur_Horz_Vert_Off
- bit 0-5 Cur_Horz_Off. Cursor Horizontal Offset within the 64x64 cursor
- 16-21 Cur_Vert_Offset. Cursor Vertical Offset within the 64x64 cursor.
-
- M+080h/42ECh D(R/W): Scratch_Reg0
- bit 0-31 Scratch_Reg0. Available as scratch-pad.
- Note: In test modes this address accesses one of the test registers.
-
- M+080h/42ECh D(R/W): Test_Reg0
- bit 0-20 Test_Mem_Addr. Memory address for test mode 1, in units of 4 bytes
- Note: This register is only accessible if Gen_Test_Cntl (M+0D0h/66ECh) bit 20-
- 22 = 1. This register is only intended for testing.
-
- M+080h/42ECh D(R): Test_Reg2
- bit 0-14 Dst_X_Lnth_Cntr. Horizontal destination length counter
- 16-30 Dst_Y_Lnth_Cntr. Vertical destination length counter
- Note: This register is only accessible if Gen_Test_Cntl (M+0D0h/66ECh) bit 20-
- 22 = 2. This register is only intended for testing.
-
- M+080h/42ECh D(R): Test_Reg4
- bit 0-12 Src_Read_Lnth_Cntr. Source FIFO read length counter
- Note: This register is only accessible if Gen_Test_Cntl (M+0D0h/66ECh) bit 20-
- 22 = 3. This register is only intended for testing.
-
- M+080h/42ECh D(R): Test_Reg5
- bit 0-7 Crtc_H_Char_Cntr. Horizontal CRTC character counter
- 8-18 Crtc_V_Line_Cntr. Vertical CRTC line counter
- 19-23 Crtc_H_Sync_Wid_Cntr. Horizontal CRTC Sync width counter
- 24-28 Crtc_V_Sync_Wid_Cntr. Vertical CRTC Sync width counter
- Note: This register is only accessible if Gen_Test_Cntl (M+0D0h/66ECh) bit 20-
- 22 = 4. This register is only intended for testing.
-
- M+080h/42ECh D(R): Test_Reg7
- bit 0-23 Pixel_Data_Crc. CRC of the displayed pixel data, including overscan
- and cursor data.
- Note: This register is only accessible if Gen_Test_Cntl (M+0D0h/66ECh) bit 20-
- 22 = 5. This register is only intended for testing.
-
- M+084h/46ECh D(R/W): Scratch_Reg1
- bit 0-31 Scratch_Reg1. Available as scratch-pad.
- Note: In test modes this address accesses one of the test registers.
-
- M+084h/46ECh D(R/W): Test_Reg1
- bit 0-31 Test_Mem_Data. Data read or written to memory
- Note: This register is only accessible if Gen_Test_Cntl (M+0D0h/66ECh) bit 20-
- 22 = 1. This register is only intended for testing.
-
- M+084h/46ECh D(R): Test_Reg3
- bit 0-12 Src_X_Lnth_Cntr. Horizontal source length counter
- 16-30 Src_Y_Lnth_Cntr. Vertical source length counter
- Note: This register is only accessible if Gen_Test_Cntl (M+0D0h/66ECh) bit 20-
- 22 = 2. This register is only intended for testing.
-
- M+084h/46ECh D(R): Test_Reg6
- bit 0 Crtc_H_Total_Eq. Set if Horizontal Counter = Crtc_H_Total
- 1 Crtc_H_Total_Half_Eq. Set if Horizontal Counter = Crtc_H_Total/2
- 2 Crtc_H_Disp_Eq. Set if Horizontal Counter = Crtc_H_Disp
- 3 Crtc_H_Sync_Strt_Eq. Set if Horizontal Counter = Crtc_H_Sync_Strt
- 4 Crtc_H_Sync_Wid_Eq. Set if Horizontal Sync Counter =
- Crtc_H_Sync_Wid
- 5 Crtc_V_Total_Eq. Set if Vertical Counter = Crtc_V_Total.
- 6 Crtc_V_Disp_Eq. Set if Vertical Counter = Crtc_V_Disp.
- 7 Crtc_V_Sync_Strt_Eq. Set if Vertical Counter = Crtc_V_Sync_Strt.
- 8 Crtc_V_Sync_Wid_Eq. Set if Vertical Sync Counter = Crtc_V_Sync_Wid.
- 9 Crtc_V_Line_Eq. Set if Vertical Counter = Crtc_V_Line.
- 10 Crtc_H_Disp_En. Horizontal Display Enable.
- 11 Crtc_V_Disp_En. Vertical Display Enable.
- 12 Crtc_Disp_En. Display Enable.
- 13 Crtc_Blank. Display Blank.
- 14 Crtc_H_Sync. Horizontal Sync.
- 15 Crtc_V_Sync. Vertical Sync.
- 16 Crtc_Frame. Odd/Even Frame. Changes when the line counter reaches
- the bottom (bit 5 of this register set)
- 17 Crtc_Frame_X. Odd/Even Frame. Changes when the line counter reaches
- the end of display (bit 6 of this register set)
- 18 Ovr_Left_Eq. Set if Horizontal Counter = Crtc_H_Total-Ovr_Wid_Left
- 19 Ovr_Right_Eq. Set if Horizontal Counter = Crtc_H_Disp+Ovr_Wid_Right
- 20 Ovr_Top_Eq. Set if Vertical Counter = Crtc_V_Total - Ovr_Wid_Top
- 21 Ovr_Bottom_Eq. Set if Vertical Counter = Crtc_V_Total +
- Ovr_Wid_Bottom
- 22 Ovr_Left_En. Left overscan enable
- 23 Ovr_Right_En. Right overscan enable
- 24 Ovr_Top_En. Top overscan enable
- 25 Ovr_Bottom_En. Bottom overscan enable
- 26 Ovr_En. Overscan Enable
- Note: This register is only accessible if Gen_Test_Cntl (M+0D0h/66ECh) bit 20-
- 22 = 4. This register is only intended for testing.
-
- M+090h/4AECh D(R/W): Clock_Cntl
- bit 0-3 Clock_Sel. Clock select bit 0-3. Output to the clock chip
- 4-5 Clock_Div. Internal clock divider. 0: no div, 1: /2, 2: /4
- 6 (W) Clock_Strobe. Connected to the strobe or clk input on
- programmable clock chips
- 7 Clock_Serial_Data. Data I/O for programmable clock chips
-
- M+0A0h/4EECh D(R/W): Bus_Cntl
- bit 0-3 Bus_Ws. Bus wait states. Default = 15.
- 4-7 Bus_Rom_Ws. ROM wait states. Default = 15
- 8-11 Bus_Rom_Page. ROM page select.
- 12 Bus_Rom_Dis. ROM Disabled if set
- 13 Bus_IO_16_En. 16bit I/O enabled if set, 8bit if clear
- 14 Bus_DAC_Snoop_En. DAC snooping enable
- 16-19 Bus_Fifo_Ws. Max number of wait states the FIFO can generate when
- full before setting Buys_Fifo_Err_Int
- 20 Bus_Fifo_Err_Int_En. Command FIFO error interrupt enable
- 21 Bus_Fifo_Err_Int. When reading indicates whether a Command FIFO
- data error interrupt occoured (if set ?), when writing acknowledges
- (and clears?) the interrupt (if set ?).
- 22 Bus_Host_Err_Int_En. Enable Command FIFO host data error interrupt
- 23 Bus_Host_Err_Int. When reading indicates whether a Command FIFO
- host data error interrupt occoured (if set ?), when writing
- acknowledges (and clears?) the interrupt (if set ?).
- 24-26 Bus_PCI_DAC_Ws. DAC wait states. Only valid for PCI bus systems.
- 27 Bus_PCI_DAC_Dly. DAC access delayed. Only valid for PCI bus
- systems.
- 28 Bus_PCI_Memw_Ws. If set use one wait state for memory writes, none
- if clear. Only valid for PCI bus systems.
- 29 Bus_PCI_Burst_Dec. Inc/Decrement address for burst memory writes
- (only valid for PCI bus). 0: Increment, 1: Decrement
- 30-31 Bus_Rdy_Read_Dly. Bus RDY delay for memory reads.
- 0: RDY early by one memory clock cycle
- 1: No RDY delay
- 2: RDY delayed by one memory clock cycle
- 3: RDY delayed by two memory clock cycles
-
- M+0B0h/52ECh D(R/W): Mem_Cntl
- bit 0-2 Mem_Size. Video Memory Size. 0: 512K, 1: 1MB, 2: 2MB, 3: 4MB,
- 4: 6MB, 5: 8MB
- 4 Mem_Rd_Latch_En. Enables latching on RAM port data
- 5 Mem_Rd_Latch_Dly. Delays latching of RAM port data by 1/2 memory
- clock period
- 6 Mem_Sd_Latch_En. Enables latching of data on serial port data
- 7 Mem_Sd_Latch_Dly. Delays latching of serial port data by 1/2 memory
- clock period
- 8 Mem_Fill_Pls. One memory clock period set for width of data latch
- pulse
- 9-10 Mem_Cyc_Lnth. memory cycle length for non-paged access:
- 0: 5 mem clock periods, 1: 6 mem clks, 2: 7 mem clks
- 16-17 Mem_Bndry. VGA/Mach Memory boundary. If the memory boundary is
- enabled (bit 18 is set) defines the amount of memory reserved for
- the VGA. 0: 0K, 1: 256K, 2: 512K, 3: 1M
- 18 Mem_Bndry_En. If set the video memory is divided between the VGA
- engine and the Mach engine, with the low part reserved for the VGA
- engine, if clear they share the video memory
-
- M+0B4h/56ECh D(R/W): Mem_VGA_Wp_Sel
- bit 0-7 Mem_VGA_Wps0. Selects the 32K block mapped for writing in the 1st
- half of the small aperture at A000h in units of 32K.
- 16-23 Mem_VGA_Wps1. Selects the 32K block mapped for writing in the 2nd
- half of the small aperture at A800h in units of 32K.
- Note: The small aperture is only available in accelerated modes and only if
- bit 2 of the Config_Cntl (6AECh) register is set.
-
- M+0B8h/5AECh D(R/W): Mem_VGA_Rp_Sel
- bit 0-7 Mem_VGA_Rps0. Selects the 32K block mapped for reading in the 1st
- half of the small aperture at A000h in units of 32K.
- 16-23 Mem_VGA_Rps1. Selects the 32K block mapped for reading in the 2nd
- half of the small aperture at A800h in units of 32K.
- Note: The small aperture is only available in accelerated modes and only if
- bit 2 of the Config_Cntl (6AECh) register is set.
-
- M+0C0h/5EECh D(R/W): Dac_Regs
- bit 0-7 Dac_W_Index. Accesses the same register as VGA I/O address 3C8h
- 8-15 Dac_Data. Accesses the same register as VGA I/O address 3C9h
- 16-23 Dac_Mask. Accesses the same register as VGA I/O address 3C6h
- 24-31 Dac_R_Index. Accesses the same register as VGA I/O address 3C7h
- Note: This is really 4 8bit registers corresponding to the VGA registers 3C6h-
- 3C9h. Each byte accesses one of the 4 DAC registers. See VGA description
- of the registers 3C6h-3C9h, or the data on the specific DAC type, for
- details. Note that Dac_Cntl (M+0C4h/62ECh) bits 0-1 can be used in
- combination with this register to access up to 16 DAC registers.
-
- M+0C4h/62ECh D(R/W): Dac_Cntl
- bit 0-1 Dac_Ext_Sel. Connected to the RS2 and RS3 inputs on the DAC.
- 8 Dac_8bit_En. Enables 8bit DAC mode (256colors of 16M) if set
- 9-10 Dac_Pix_Dly. Setup and hold time on pixel data. 0: None,
- 1: 2ns - 4ns delay, 2: 4ns - 8ns delay
- 11-12 Dac_Blank_Adj. Blank Delay in number of pixel clock periods.
- 0: None, 1: 1 pixel clock, 2: 2 pixel clocks
- 13 Dac_VGA_Adr_En. When bit 24 of Crtc_Gen_Cntl (M+01Ch/1EECh) is set,
- this bit enables access to the VGA DAC I/O addresses (3C6h-3C9h).
- 16-18 Dac_Type. The DAC type - initialised from configuration straps on
- power-up. See Config_Stat0 (M+0E4h/72ECh) bits 9-11 for details
-
- M+0D0h/66ECh D(R/W): Gen_Test_Cntl
- bit 0 Gen_EE_Data_Out. EEPROM data output
- 1 Gen_EE_Clock. EEPROM clock output
- 2 Gen_EE_Chip_Sel. EEPROM Chip Select.
- 3 (R) Gen_EE_Data_In. Data input from the EEPROM
- 4 Gen_EE_En. Enables EEPROM access
- 5 Gen_Ovr_Output_En. Enables output of Overscan signal for external
- DAC
- 6 Gen_Ovr_Polarity. Polarity of the external Overscan signal.
- 0: Active high, 1: Active low
- 7 Gen_Cur_En. Enables the Hardware Cursor if set
- 8 Gen_Gui_En. Enables the drawing engine if set, resets it if clear
- 9 Gen_Block_Wr_En. Enables Block Write Memory cycle
- 16 Gen_Test_Fifo_En. Enables Draw engine testing of the Command FIFO
- 17 Gen_Test_Gui_Regs_En. Enables loading of the drawing engine
- registers without triggering drawing operations or context switches
- 18 Gen_Test_Vect_En. Enables the Bi-directional buses for 1 clock
- turn-around when switching from input to output.
- 19 Gen_Test_Crc_Str. Pixel data CRC initialization strobe. Write 1 to
- reset the CRC accumulator, which will then calculate the CRC for
- the next frame displayed. The CRC value calculated includes
- Overscan and Hardware Cursor data.
- 20-22 Gen_Test_Mode. Test Mode. 0: Disabled, 1: Memory Read/Write test,
- 2: Draw engine dest/source length counter test, 3: Draw engine
- source read length counter test, 4: CRTC test, 5: Pixel data CRC
- test
- 24 Gen_Test_Mem_Wr. Test Mode 1 (bits 20-22) cycle type:
- 0: Read cycle, 1: Write cycle
- 25 Gen_Test_Mem_Strobe. Writing a 1 will initiate a memory cycle if
- bits 20-22 = 1
- 26 Gen_Test_Dst_Ss_En. Enables Destination trajectory controller
- single stepping if set. The engine processes multiple pixels in
- single steps for rectangular draw operations, while Bresenham line
- draw operations works on single pixels at a time.
- 27 (W) Gen_Test_Dst_Ss_Strobe. Writing a 1 to this bit while bit 26 is
- set advances the drawing engine one step.
- 28 Gen_Test_Src_Ss_En. Enables Source trajectory controller single
- stepping if set
- 29 (W) Gen_Test_Src_Ss_Strobe. Writing a 1 to this bit while bit 28 is
- set advances the drawing engine one step.
- 30 Gen_Test_Cc_En. Enables CRTC single stepping
- 31 (W) Gen_Test_Cc_Strobe. Writing a 1 to this bit while bit 30 is set
- advances the CRTC one character clock.
-
- M+0E0h/6EECh D(R): Config_Chip_ID.
- bit 0-15 Cfg_Chip_Type. Product Type Code. 0D7h for the 88800GX,
- 57h for the 88800CX (guess)
- 16-23 Cfg_Chip_Class. Class code
- 24-31 Cfg_Chip_Rev. Revision code
-
- M+0E4h/72ECh D(R): Config_Stat0
- bit 0-2 Cfg_Bus_Type. Host Bus type. 0: ISA, 1: EISA, 6: VLB, 7: PCI
- 3-5 Cfg_Mem_Type. Memory Type. 0: DRAM (256Kx4), 1: VRAM (256Kx4, x8,
- x16), 2: VRAM (256Kx16 short shift reg), 3: DRAM (256Kx16),
- 4: Graphics DRAM (256Kx16), 5: Enh VRAM (256Kx4, x8, x16), 6: Enh
- VRAM (256Kx16 short shift reg)
- 6 Cfg_Dual_CAS_En. Dual CAS support enabled if set
- 7-8 Cfg_Local_Bus_Option. Local Bus Option.
- 1: Local option 1, 2: Local option 2, 3: Local option 3
- 9-11 Cfg_Init_DAC_Type. DAC type. 2: ATI68875/TI 34075, 3: Bt476/Bt478,
- 4: Bt481, 5: ATI68860/ATI68880, 6: STG1700, 7: SC15021
- 12-14 Cfg_Init_Card_ID. Card ID. 0-6: Card ID 0-6, 7: Disable Card ID
- 15 Cfg_Tri_Buf_Dis. Tri-stating of output buffers during reset
- disabled if set
- 16-21 Cfg_Ext_ROM_Addr. Extended Mode ROM Base Address. Bits 12-17 of the
- ROM base address, 0: C0000h, 1: C1000h ... 3Fh: FE000h
- 22 Cfg_ROM_Dis. Disables ROM if set
- 23 Cfg_VGA_Enm. Enables VGA Controller
- 24 Cfg_Local_Bus_Cfg. 0: Local Bus configuration 2, 1: configuration 1
- 25 Cfg_Chip_En. Enables chip if set
- 26 Cfg_Local_Read_Dly_Dis. If clear delays read cycle termination by 1
- bus clock, no delay if set
- 27 Cfg_ROM_Option. ROM Address. 0: E0000h, 1: C0000h
- 28 Cfg_Bus_option. EISA bus: Enables POS registers if set, disables
- POS registers and enables chip if clear.
- VESA Local Bus: Enables decode of I/O address 102h if clear,
- disables if set
- 29 Cfg_Local_DAC_Wr_En. Enables local bus DAC writes if set
- 30 Cfg_VLB_Rdy_Dis. Disables VESA local bus compliant RDY if set
- 31 Cfg_Ap_4Gbyte_Dis. Disables 4GB Aperture Addressing if set
-
- M+0E8h/76ECh D(R): Config_Stat1
- bit 0 Cfg_PCI_DAC_Cfg. If clear the DAC data bus is connected directly to
- the DAC, if set it is connected through a latch. Only valid for
- PCI bus systems.
-
- M+100h D(R/W): Dst_Off_Pitch
- bit 0-19 Dst_Offset. Address of the Destination area in units of 8 bytes.
- 22-31 Dst_Pitch. Destination Pitch in units of 8 pixels. In mono modes
- must be a multiplum of 64 pixels, in 4bpp modes a multiplum of 16
- pixels.
-
- M+104h D(R/W): Dst_X
- bit 0-12 Dst_X. Destination X coordinate
-
- M+108h D(R/W): Dst_Y
- bit 0-14 Dst_Y. Destination Y coordinate
-
- M+10Ch D(W): Dst_Y_X
- bit 0-14 Dst_Y. Destination Y coordinate
- 16-28 Dst_X. Destination X coordinate
-
- M+110h D(R/W): Dst_Width
- bit 0-12 Dst_Width. Width of the destination area in pixels.
- 31 Dst_Wid_Fill_Dis. If clear the bitblt operation is started by
- writing to this register, if set draw is not started.
-
- M+114h D(R/W): Dst_Height
- bit 0-14 Dst_Height. Height of the destination area in lines.
-
- M+118h D(W): Dst_Height_Width
- bit 0-14 Dst_Height. Height of the destination area in lines.
- 16-28 Dst_Width. Width of the destination area in pixels.
- Note: Writing to this register initiates a rectangle fill
-
- M+11Ch D(W): Dst_X_Width
- bit 0-12 Dst_X. Destination X coordinate
- 16-28 Dst_Width. Destination width
-
- M+120h D(R/W): Dst_Bres_Lnth
- bit 0-14 Dst_Bres_Lnth. Line length in pixels.
- 31 Dst_Bres_Lnth_Line_Dis. If clear the line draw operation is started
- by writing to this register, if set draw is not started.
- Note: Writing to this register starts the line draw, unless bit 31 is set.
-
- M+124h D(R/W): Dst_Bres_Err
- bit 0-17 Dst_Bres_Err. Bresenham Error Term. Should be set to:
- 2*min(abs(dX),abs(dY))-max(abs(dX),abs(dY)), where dX is the
- horizontal difference (in pixels) between the start and end point
- and dY the vertical difference.
-
- M+128h D(R/W): Dst_Bres_Inc
- bit 0-17 Dst_Bres_Inc. Bresenham increment registers. Should be set to:
- 2*min(abs(dX),abs(dY)), where dX is the horizontal difference (in
- pixels) between the start and end point and dY the vertical diff.
-
- M+12Ch D(R/W): Dst_Bres_Dec
- bit 0-17 Dst_Bres_Dec. Bresenham decrement registers. Calculated as:
- 2*(min(abs(dX),abs(dY))-max(abs(dX),abs(dY))), where dX is the
- horizontal difference (in pixels) between the start and end point
- and dY the vertical difference. Should be negative.
-
- M+130h D(R/W): Dst_Cntl
- bit 0 Dst_X_Dir. Destination X dir. 0: Right to left, 1: Left to right
- 1 Dst_Y_Dir. Destination Y dir. 0: Bottom to top, 1: Top to bottom.
- 2 Dst_Y_Major. Destination Y Major axis (Bresenham linedraw).
- 0: X is major axis, 1: Y is major axis
- 3 Dst_X_Tile. Enable Rectangular tiling in the X direction if set.
- For rectangular destinations setting this bit causes the Dst_X
- register to have the value (Dst_X + Dst_Width) after the blit.
- 4 Dst_Y_Tile. Enable Rectangular tiling in the Y direction if set.
- For rectangular destinations setting this bit causes the Dst_Y
- register to have the value (Dst_Y + Dst_Height) after the blit.
- 5 Dst_Last_Pel. Enable Destination last Pel. If set the last pixel in
- the line is drawn, if clear it is not drawn
- 6 Dst_Polygon_En. Enables Polygon Outline & Fill.
- 7 Dst_24_Rot_En. Enables 24bpp Rotation.
- 8-10 Dst_24_Rot. Initial foreground color, background color, write mask
- and pattern rotation when drawing in 24bit packed mode.
- 11 Dst_Bres_Sign. When the Dst_Bres_Err (M+124h) register is 0, it
- should be considered as: 0: Positive, 1: Negative
-
- M+180h D(R/W): Src_Off_Pitch
- bit 0-19 Src_Offset. Start address of the source area in units of 8 bytes
- 22-31 Src_Pitch. Width of the source area in units of 8 pixels. In mono
- modes the source width must be a multipla of 64 pixels and in 4bpp
- modes a multipla of 16 pixels.
-
- M+184h D(R/W): Src_X
- bit 0-12 Src_X. Starting X-coordinate of the blit source
- Note: this register can also be written at M+18Ch
-
- M+188h D(R/W): Src_Y
- bit 0-14 Src_Y. Starting Y-coordinate of the blit source
- Note: this register can also be written at M+18Ch
-
- M+18Ch D(W): Src_Y_X
- bit 0-14 Src_Y. Starting Y-coordinate of the blit source
- 16-28 Src_X. Starting X-coordinate of the blit source
-
- M+190h D(R/W): Src_Width1
- bit 0-12 Src_Width1. Width of the pattern in scan lines. For rotated
- patterns this is the width from the startpoint (inside the
- pattern) to the end of the pattern. Src_Width2 (M+1A8h) defines
- the total pattern width. Only used if patterns are enabled (M+1B4h
- bit 0 is set)
- Note: this register can also be written at M+198h
-
- M+194h D(R/W): Src_Height1
- bit 0-14 Src_Height1. Height of the pattern in scan lines. For rotated
- patterns this is the height from the startpoint (inside the
- pattern) to the end of the pattern. Src_Height2 (M+1ACh) defines
- the total pattern height. Only used if patterns are enabled (M+1B4h
- bit 0 is set)
- Note: this register can also be written at M+198h
-
- M+198h D(W): Src_Height1_Width1
- bit 0-14 Src_Height1. Source Pattern Height. See Src_Height1 (M+194h)
- 16-28 Src_Width1. Source Pattern Width. See Src_Width1 (M+190h)
-
- M+19Ch D(R/W): Src_X_Start
- bit 0-12 Src_X_Start. For pattern with rotation selects the left edge of the
- pattern.
- Note: this register can also be written at M+1A4h
-
- M+1A0h D(R/W): Src_Y_Start
- bit 0-14 Src_Y_Start. For pattern with rotation selects the top edge of the
- pattern.
- Note: this register can also be written at M+1A4h
-
- M+1A4h D(W): Src_Y_X_Start
- bit 0-14 Src_Y_Start. For pattern with rotation selects the top edge of the
- pattern.
- 16-28 Src_X_Start. For pattern with rotation selects the left edge of the
- pattern.
-
- M+1A8h D(R/W): Src_Width2
- bit 0-12 Src_Width2. For Pattern with rotation blits defines the total width
- of the pattern in pixels. Src_Width1 (M+190h) defines the distance
- from the starting point to the end of the pattern. Only used if
- patterns with rotation are enabled (M+1B4h bit 0 and 1 both set).
- Note: this register can also be written at M+1B0h
-
- M+1ACh D(R/W): Src_Height2
- bit 0-14 Src_Height2. For Pattern with rotation blits defines the total
- height of the pattern in scanlines. Src_Height1 (M+194h) defines
- the distance from the starting point to the end of the pattern.
- Only used if patterns with rotation are enabled (M+1B4h bit 0 and 1
- both set).
- Note: this register can also be written at M+1B0h
-
- M+1B0h D(W): Src_Height2_Width2
- bit 0-14 Src_Height2. Source Pattern Height. See Src_Height1 (M+1ACh)
- 16-28 Src_Width2. Source Pattern Width. See Src_Width2 (M+1A8h).
-
- M+1B4h D(R/W): Src_Cntl
- bit 0 Src_Patt_En. Enables the use of patterns if set. Src_Y_End is only
- used if this bit is set.
- 1 Src_Patt_Rot_En. Enables rotated patterns if set (and bit 0 set).
- Src_X_Start (M+19Ch) and Src_Y_Start (M+188h) are only used if this
- bit is set.
- 2 Src_Linear_En. Enables Linear Source, where the source data starts
- at Src_Offset (M+180h) and advances left-to-right. Dst_X_Dir
- (M+130h bit 0) should be set. All other source registers are
- ignored, except Src_Byte_Align (bit 3)
- 3 Src_Byte_Align. If set the source pointer advances to the nearest
- byte boundary when the destination moves to the next line. Only
- valid in 1bpp and 4bbp modes with rectangular destination and
- Linear Source (bit 2) is set.
- 4 Src_Line_X_Dir. Source X direction for Bresenham linedraw
-
- M+200h - M+23Ch D(W): Host_Data[]
- bit 0-31 Host_Data. This register is used for transfering Host Source data.
- There are 16 DWORD addresses mapped to the same register to allow
- transfer via REP MOVSD. If too little host data is transfered
- (another drawing engine register is written while the engine still
- expects host data) the engine panics and completes the operation
- with garbage data. Any excess data transfered is discarded.
-
- M+240h D(R/W): Host_Cntl
- bit 0 Host_Byte_Align. Enables Host Data Byte alignment if set
-
- M+280h D(R/W): Pat_Reg0
- bit 0-31 Pat_Reg0. 1st half of the pattern. The other half is in M+284h
-
- M+284h D(R/W): Pat_Reg1
- bit 0-31 Pat_Reg1. 2nd half of the pattern. The other half is in M+280h
-
- M+288h D(R/W): Pat_Cntl
- bit 0 Pat_Mono_En. Enables mono pattern
- 1 Pat_Clr_4x2_En. Enables 4x2 color pattern
- 2 Pat_Clr_8x1_En. Enables 8x1 color pattern
-
- M+2A0h D(R/W): Sc_Left
- bit 0-12 Sc_Left. Left edge of the scissor rectangle. No pixels are drawn
- to the left of this line.
-
- M+2A4h D(R/W): Sc_Right
- bit 0-12 Sc_Right. Right edge of the scissor rectangle. No pixels are drawn
- to the right of this line.
-
- M+2A8h D(W): Sc_Left_Right
- bit 0-12 Sc_Left. Left edge of the scissor rectangle. No pixels are drawn
- to the left of this line.
- 16-27 Sc_Right. Right edge of the scissor rectangle. No pixels are drawn
- to the right of this line.
- Note: These registers are also present at M+2A0h and M+2A4h
-
- M+2ACh D(R/W): Sc_Top
- bit 0-14 Sc_Top. Top edge of the scissor rectangle. No pixels are drawn
- above this line.
-
- M+2B0h D(R/W): Sc_Bottom
- bit 0-14 Sc_Bottom. Bottom edge of the scissor rectangle. No pixels are
- drawn below this line.
-
- M+2B4h D(W): Sc_Top_Bottom
- bit 0-14 Sc_Top. Top edge of the scissor rectangle. No pixels are drawn
- above this line.
- 16-30 Sc_Bottom. Bottom edge of the scissor rectangle. No pixels are
- drawn below this line.
- Note: These registers are also present at M+2ACh and M+2B0h
-
- M+2C0h D(R/W): Dp_Bkgd_Clr
- bit 0-31 Dp_Bkgd_Clr. Background color. Only the 1/4/8/16/24/32 lowest bits
- used depending on the current pixel depth.
-
- M+2C4h D(R/W): Dp_Frgd_Clr
- bit 0-31 Dp_Frgd_Clr. Foreground color. The bits needed for the current
- pixel depth are taken from the low end. I.e. in 4bpp mode only the
- low 4 birts are used.
-
- M+2C8h D(R/W): Dp_Write_Msk
- bit 0-31 Dp_Write_Msk. Write mask. Each 0 bit prevents writing to the
- corresponding bit in each pixel.
-
- M+2CCh D(R/W): Dp_Chain_Mask
- bit 0-14 Dp_Chain_Msk. Defines the breaks between pixels and color blocks.
- Each set bit prevents the propagation of the corresponding carry
- bit in the ALU. Only used if the fore- or background mix is set to
- 17h. Should be programmed to the folowing values, depending of the
- pixel depth: 1bpp: N/A, 4bpp: 8888h, 7bpp (RGB 2:3:2): D2D2h,
- 8bpp: 8080h, 8bpp (RGB 3:3:2): 9292h, 15bpp: 4210h, 16bpp: 8410h,
- 24bpp: 8080h, 32bpp: 8080h
-
- M+2D0h D(R/W): Dp_Pix_Width
- bit 0-2 Dp_Dst_Pix_Width. Destination pixel width.
- 0: Mono, 1: 4bpp, 2: 8bpp, 3: 15bpp, 4: 16bpp, 6: 32bpp
- 8-10 Dp_Src_Pix_Width. Source Pixel Width. See above
- 16-18 Dp_Host_Pix_Width. Host Data Pixel Width. See above
- 24 Dp_Byte_Pix_Order. Pixel order within each byte in 1bpp and 4bpp
- modes. 0: 1st pixel at MSB, 1: 1st pixel at LSB
- Note: The pixel widths should either be the same for all three fields, or for
- monochrome to color expansion (Src or Host set to mono).
-
- M+2D4h D(R/W): Dp_Mix
- bit 0-4 Dp_Bkgd_Mix. Background Mix (see below)
- 16-20 Dp_Fore_Mix. Foreground Mix:
- 00h: not DST
- 01h: 0 (always false)
- 02h: 1 (always true)
- 03h: DST
- 04h: not SRC
- 05h: DST xor SRC
- 06h: (not DST) xor SRC
- 07h: SRC
- 08h: (not DST) or (not SRC)
- 09h: DST or (not SRC)
- 0Ah: (not DST) or SRC
- 0Bh: DST or SRC
- 0Ch: DST and SRC
- 0Dh: (not DST) and SRC
- 0Eh: DST and (not SRC)
- 0Fh: (not DST) and (not SRC)
- 17h: (DST+SRC)/2
-
- M+2D8h D(R/W): Dp_Src
- bit 0-2 Dp_Bkgd_Src. Background Source. 0: Background color, 1: Foreground
- color, 2: Host data, 3: Blit source, 4: Pattern registers
- 8-10 Dp_Frgd_Src. Foreground Source. See above
- 16-17 Dp_Mono_Src. Monochrome Source. 0: Always 1, 1: Pattern registers,
- 2: Host Data, 3: Blit Source
-
- M+300h D(R/W): Clr_Cmp_Clr
- bit 0-31 Clr_Cmp_Clr. Color used for color comparison.
-
- M+304h D(R/W): Clr_Cmp_Msk.
- bit 0-31 Clr_Cmp_Msk. Color comparison mask
-
- M+308h D(R/W): Clr_Cmp_Cntl
- bit 0-2 Clr_Cmp_Fn. Color Comparison function:
- 0: False, 1: True, 4: Diff from Clr_Cmp_Clr, 5: Equal to
- Clr_Cmp_Clr. If the comparison is false the source data is written
- to the destination, if true the destination is left untouched.
- 24 Clr_Cmp_Src. Set to compare against the source data, clear to
- compare against destination data.
-
- M+310h D(R): Fifo_Stat
- bit 0-15 Fifo_Stat. FIFO State. Each bit set indicates a filled slot in the
- command FIFO. Note that only registers from M+100h - M+3FFh use the
- Command FIFO
- 31 Fifo_Err. FIFO Overrun Error occoured if set. If set the drawing
- engine is locked until reset through the Gen_Test_Cntl register
-
- M+320h D(R/W): Context_Mask
- bit 0-31 Context_Mask. Each bit mask the loading of one DWORD in the context
- structure. Offset 00h and 70h are loaded regardless of the state of
- bits 0 and 28 of this register.
- Context Structure:
- Bit: Offset: Reg Offset: Register Name:
- - 00h 320h Context_Mask
- 2 08h 100h Dst_Off_Pitch
- 3 0Ch 10Ch Dst_Y_X
- 4 10h 118h Dst_Height_Width
- 5 14h 124h Dst_Bres_Err
- 6 18h 128h Dst_Bres_Inc
- 7 1Ch 12Ch Dst_Bres_Dec
- 8 20h 180h Src_Off_Pitch
- 9 24h 18Ch Src_Y_X
- 10 28h 198h Src_Height1_Width1
- 11 2Ch 1A4h Src_Y_X_Start
- 12 30h 1B0h Src_Height2_Width2
- 13 34h 280h Pat_Reg0
- 14 38h 284h Pat_Reg1
- 15 3Ch 2A8h Sc_Left_Right
- 16 40h 2B4h Sc_Top_Bottom
- 17 44h 2C0h Dp_Bkgd_Clr
- 18 48h 2C4h Dp_Frgd_Clr
- 19 4Ch 2C8h Dp_Write_Mask
- 20 50h 2CCh Dp_Chain_Mask
- 21 54h 2D0h Dp_Pix_Width
- 22 58h 2D4h Dp_Mix
- 23 5Ch 2D8h Dp_Src
- 24 60h 300h Clr_Cmp_Clr
- 25 64h 304h Clr_Cmp_Mask
- 26 68h 308h Clr_Cmp_Cntl
- 27 6Ch 330h Gui_Traj_Cntl
- - 70h 32Ch Context_Load_Cntl
- Offset 04h-07h and 74h-FFh Reserved
-
- M+32Ch D(R/W): Context_Load_Cntl
- bit 0-14 Context_Load_Ptr. Context Load Pointer in units of 256 bytes from
- the top of video memory
- 16-17 Context_Load_Cmd. 0. No context load, 1: load from Context_Load_Ptr
- 2: Load from Context_Load_Ptr and start rectangular fill,
- 3: Load from Context_Load_Ptr and start Bresenham line
- 31 Context_Load_Dis. Execute context if set, do not execute if clear
-
- M+330h D(R/W): Gui_Traj_Cntl
- bit 0 Dst_X_Dir. Destination X dir. 0: Right to left, 1: Left to right
- 1 Dst_Y_Dir. Destination Y dir. 0: Bottom to top, 1: Top to bottom.
- 2 Dst_Y_Major. Destination Y Major axis (Bresenham linedraw).
- 0: X is major axis, 1: Y is major axis
- 3 Dst_X_Tile. Enable Rectangular tiling in the X direction if set.
- For rectangular destinations setting this bit causes the Dst_X
- register to have the value (Dst_X + Dst_Width) after the blit.
- 4 Dst_Y_Tile. Enable Rectangular tiling in the Y direction if set.
- For rectangular destinations setting this bit causes the Dst_Y
- register to have the value (Dst_Y + Dst_Height) after the blit.
- 5 Dst_Last_Pel. Enable Destination last Pel. If set the last pixel in
- the line is drawn, if clear it is not drawn
- 6 Dst_Polygon_En. Enables Polygon Outline & Fill.
- 7 Dst_24_Rot_En. Enables 24bpp Rotation.
- 8-10 Dst_24_Rot. Initial fg color, Bk color, write mask and pattern
- rotation when drawing in 24bit packed mode.
- 11 Dst_Bres_Sign. When the Dst_Bres_Err (M+124h) register is 0, it
- should be considered as: 0: Positive, 1: Negative
- 16 Src_Patt_En. Enables Pattern source - Src_Y_End is only used if
- this bit is ?set?
- 17 Src_Patt_Rot_En. Enables Pattern Source rotation - Src_X_Start and
- Src_Y_Start are only used if this bit ?set?
- 18 Src_Linear_En. Enables Linear Source Addressing where the source
- data starts at Src_Offset and continues left to right as a pixel
- stream. All other source registers and bits are ignored, except bit
- 19. Dst_X_Dir (bit 0 should be set for proper operation.
- 19 Src_Byte_Align. If bit 18 is set, controls whether the source
- advances to the byte when the destination advances in the Y
- direction
- 20 Src_Line_X_Dir. Source X direction when for Bresenham Linedraw
- 24 Pat_Mono_En. Enables Monochrome 8x8 Pattern
- 25 Pat_Clr_4x2_En. Enables Color 4x2 Pattern
- 26 Pat_Clr_8x1_En. Enables Color 8x1 Pattern
- 28 Host_Byte_Align. Enables Host Data byte alignment if set
- Note: This register is a combination of the Dst_Cntl (M+130h), Src_Cntl
- (M+1B4h), Pat_Cntl (M+288h) and Host_Cntl (M+240h) registers.
-
- M+338h D(R): Gui_Stat
- bit 0 Gui_Active. Set if the Draing engine is busy
- 8 Dstx_Lt_Scissor_Left. Set if DstX is left of the left scissor
- 9 Dstx_Gt_Scissor_Right. Set if DstX is right of the right scissor
- 10 Dsty_Lt_Scissor_Top. Set if DstX is above the top scissor
- 11 Dsty_Gt_Scissor_Bottom. Set if DstX is below the bottom scissor
-
-
- Reserved locations in the ROM (typically starting at C000h:0):
-
- $31 9 bytes '761295520' ID's ATI product
- $40 2 bytes '31' = ATI VGA Wonder/Mach series
- $43 1 byte Gate revision.
- ' ' (20h) = Mach64 (Not documented ??)
- $64 4 bytes Far jump to Mach64 BIOS function. AL is the function code,
- and the error code is returned in AH (0: Ok, 1: Error,
- 2: Function not supported).
- AL = 00h Load coprocessor CRTC parameters
- CL bit 0-3 Color depth. 1: 4bpp, 2: 8bpp,
- 3: 15bpp, 4: 16bpp, 5: 24bp, 6: 32bpp
- 4 If set enables gamma correction in
- direct color modes (15bpp and above),
- enables 8bit DAC width in 8bpp modes
- (256 of 16M colors).
- 6-7 Pitch. 0: 1024, 1: Don't change,
- 2: Same as displayed
- CH Resolution.
- 12h: 640x480
- 6Ah: 800x600
- 55h: 1024x768
- 80h: Load from table at offset BX in EEPROM
- 81h: Load from table at DS:BX
- 82h: OEM mode
- 83h: 1280x1024
- 84h: 1600x1200
- AL = 01h Set display mode.
- CL bit 0 Clear for VGA mode with 6bit DAC, set
- for coprocessort mode
- 7 Set for 8bit DAC (8bpp modes) or Gamma
- correction (direct color modes). OR'd
- with bit 4 from the AL=00h function.
- AL = 02h Load coprocessor CRTC parameters and set mode
- Same parameters as AL = 00h
- AL = 03h Read EEPROM data
- BX Index into the EEPROM
- Returns data in DX
- AL = 04h Write EEPROM data
- BX Index into the EEPROM
- DX Data
- AL = 05h Memory aperture services
- CL bit 0 Set to enable Memory Aperture, clear to
- disable
- AL = 06h Short query function
- Returns configuration data:
- AL bit 0-5 Aperture configuration
- 0: disable, 1: 4M, 2: 8M
- 6 Aperture address is predefined or
- hardcoded in BIOS if set, user
- defined if clear
- 7 Aperture address is in 4GB range if
- set, in 128MB range if clear
- BX Aperture address
- CL Memory Size
- CH Color Depth support
- bit 0 Set if 15bpp (5-5-5) supported
- 1 Set if 16bpp (5-6-5) supported
- 2 Set if 24bpp RGB supported
- 3 Set if 24bpp BGR supported
- 4 Set if 32bpp BGR supported
- 5 Set if 32bpp RGBx supported
- DX ASIC identification.
- bit 0-7 Revision
- 8-15 Type
- AL = 07h Return hardware capability list
- Returns ??
- AL = 08h Return query device data structure in bytes
- CL bit 0 Set to return size of header and mode
- tables, clear to return size of header
- Returns size (number of bytes) in CX
- AL = 09h Query device
- DX:BX Pointer to buffer to receive data. The
- buffer is filled with first a Query
- structure and then a number of Mode Table
- structures.
- CL bit 0 Set to return header and mode tables,
- clear to return header only
- AL = 0Ah Return clock chip frequency table
- Returns:
- AL Clock chip type
- DX:BX Pointer to 16 WORD table of the
- preprogrammed frequencies. Each WORD
- holds one clock in units of 10KHz
- DX:CX Pointer clock chip,info structure:
- Offset Type:
- 00h BYTE Clock chip type
- 01h BYTE Frequency table id.
- 02h WORD Min freq in units of 10KHz
- WORD Max freq in units of 10KHz
- 06h BYTE User programmable entry
- number (if <> FFh)
- 07h BYTE Reserved
- 08h WORD Hardware dependant
- AL = 0Bh Program a specified clock entry
- CH Entry in clock table (0-15)
- BX New clock value in units of 10KHz
- Returns:
- AL = Clock chip type
- BX = Programming word (chip dependant)
- AL = 0Ch DPMS service, set DPMS mode
- CL New mode. 0: Active, 1: Standby, 2: Suspend,
- 3. Off, 4: Blanking display
- AL = 0Dh Return current DPMS state in CL.
- Returns CL = state. 0: Active, 1: Standby,
- 2: Suspend, 3. Off, 4: Blanking display
- AL = 0Eh Set graphics controller's power management state
- CL New state. 0: Active, 1: Standby,
- 2: Suspend, 3. Off
- AL = 0Fh Return graphics controller's current power
- management state in CL.
- Returns CL = state. 0: Active, 1: Standby,
- 2: Suspend, 3. Off
- AL = 10h Set RAMDAC to different states
- CL bit 0 Set to switch RAMDAC to sleep mode,
- clear to switch it to normal mode
- Note: CL = 80h is reserved.
- AL = 11h Return external storage device information
- CL bit 0-3 Device type
- 4-6 External data access mode.
- 0: Read- and writable
- 1: Readable, not writable
- 3: Neither readable or writable
- 4: Read- and writable. Access must
- by handled according to the ??
- 7 If set all of external storage is
- used, if clear there is space
- Returns:
- CL Last readable and writable entries in the
- storage device
- CH Number of (read only) 16bit entries in the
- storage device
- BL Offset into the CRTC parameter table
- BH Size of the CRTC parameter table
- AL = 12h Short Query. Returns:
- DX I/O base address
- AX,BX,CX reserved
-
-
- Query structure (returnde by AL = 09h):
- Offset Size Description
- 00h WORD Size of structure in bytes
- 02h BYTE Revision
- 03h BYTE Number of mode tables
- 04h WORD Offset of mode tables in bytes
- 06h BYTE Size of each mode table
- 07h BYTE VGA type. 0: Disabled, 1: enabled
- 08h WORD ASIC revision
- 0Ah BYTE VGA Boundary. 0: full access, 1: 256K, 2: 512K, 3: 768, 4: 1MB
- 0Bh BYTE Memory Size. 0: 512K, 1: 1MB, 2: 2MB, 3: 4MB, 4: 6MB, 5: 8MB,
- 6: 12MB, 7: 8MB
- 0Ch BYTE Bits 0-3 DAC Type. 2: TI 34075/ATI68875, 3: Bt476/478, 4:
- Bt481, AT&T20c490/491, 5: ATI68860, 6: STG1700, 7: STG1702,
- SC15021, AT&T20c498
- 0Dh BYTE Memory Type. 0: DRAM 256Kx16, 1: VRAM 256Kx4, 2: VRAM 256Kx16,
- 3: DRAM 256Kx4, 5: VRAM 256Kx4 special, 6: VRAM 256Kx16 special
- 0Eh BYTE Bus Type. 0: ISA, 1: EISA, 6: VLB, 7: PCI
- 0Fh BYTE Bit 6 Enable sync on green
- 7 Enable composite sync
- 10h WORD Aperture address in megabytes (0-4095)
- 12h BYTE Aperture configuration.
- bit 0-5 0: Disable, 1: 4MB, 2: 8MB
- 6 Aperture address is predefined or hardcoded in BIOS if
- set, user defined if clear
- 7 Aperture address is in 4GB range if set, in 128MB range
- if clear
- 13h BYTE Color Depth Support.
- Bit 0 16bpp (5-6-5) modes supported if set
- 1 15bpp (5-5-5) modes supported if set
- 2 24bpp (RGB) modes supported if set
- 3 24bpp (BGR) modes supported if set
- 4 32bpp (BGR) modes supported if set
- 5 32bpp (RGBx) modes supported if set
- 14h BYTE RAMDAC support feature
- Bit 4 Supports sleep mode if set
- 5 Supports 256 grey scale if set
- 6 Supports gamma correction if set
- 7 Supports sync on green if set
- 16h WORD Offset into current mode table if non-zero
- 18h WORD I/O base address
- 1Ah 6BYTEs Reserved
-
- Mode Table Structure (returned by AL = 09h after the Query structure).
- Offset Size Description
- 00h WORD Horizontal Display Resolution in pixels
- 02h WORD Vertical Display Resolution in scanlines
- 04h BYTE Maximum pixel depth. 1: 4bpp, 2: 8bpp, 3: 15bpp, 4: 16bpp,
- 5: 24bp, 6: 32bpp
- 05h BYTE Mode number. 12h: 640x480, 6Ah: 800x600, 55h: 1024x768,
- 82h: OEM mode, 83h: 1280x1024, 84h: 1600x1200
- 06h WORD Offset into EEPROM. Table generated from CRTC parameters if = 0,
- else this is an index into the EEPROM.
- 0Ch WORD Bit 8 Enable doubel scan
- 9 Enable interlace
- 10 Enable MUX mode
- 0Eh BYTE Crtc_H_Total
- 0Fh BYTE Crtc_H_Disp
- 10h BYTE Crtc_H_Sync_Strt
- 11h BYTE Crtc_H_Sync_Wid
- 12h WORD Crtc_V_Total
- 14h WORD Crtc_V_Disp
- 16h WORD Crtc_V_Sync_Strt
- 18h BYTE Crtc_V_Sync_Wid
- 19h BYTE Clock_Cntl
- 1Ah WORD Dot Clock for coprocessor mode (programmable clock chip)
- 1Ch WORD Bits 0-3 Ovr_Wid_Left
- 4-7 Ovr_Wid_Right
- 8-11 Crtc_H_Sync_Dly
- 12-15 Crtc_H_Total_Dly
- 1Eh WORD Ovr_Wid_Top, Ovr_Wid_Bottom
- 20h WORD Ovr_Clr_B, Ovr_Clr_8
- 22h WORD Ovr_Clr_G, Ovr_Clr_R
-
- EEPROM Data structure. All offsets are in WORDs (16bits).
- Offset Bits Description
- 00h 0-15 EEPROM write counter
- 01h 0-7 EEPROM checksum. The (byte) sum of the EEPROM must be 0.
- 02h 0-15 Reserved(0)
- 03h 0-3 EEPROM table revision
- 04h 0-15 Custom monitor indices
- 05h 0 Enable composite sync
- 1 Enable sync on green
- 6 Enable 640x480 at 72Hz if set
- 7 Use stored 640x480 parameters for coprocessor mode if set
- 8-15 1280x1024 refresh rate information
- 06h 0 Select 800x600 at 85Hz interlaced if set
- 1 Select 800x600 at 89Hz interlaced if set
- 2 Select 800x600 at 56Hz if set
- 3 Select 800x600 at 60Hz if set
- 4 Select 800x600 at 70Hz if set
- 5 Select 800x600 at 72Hz if set
- 7 Use stored 800x600 parameters for coprocessor mode if set
- 07h 0 Select 1024x768 at 87Hz interlaced if set
- 1 Select 1024x768 at 60Hz if set
- 2 Select 1024x768 at 70Hz if set
- 3 Select 1024x768 at 72Hz if set
- 7 Use stored 1024x768 parameters for coprocessor mode if set
- 08h 0 16bit ROM enabled if set
- 1 Zero Wait State ROM enabled if set
- 2 Zero Wait State RAM enabled if set
- 3 VGA bus I/O is 16bit if set, 8 bit if clear
- 4 Font selected at power-up. 0: 8x14 or 9x14, 1: 8x16 or 9x16
- 5 Dual monitor enable
- 6-7 Monochrome Mode Color Select. 0: White, 1: Green, 2: Amber
- 8-15 Power-Up Video Mode. 3: VGA color (secondary), 5: VGA mono
- (secondary), 9: VGA color (primary), 0Bh: VGA mono (primary).
- 09h 0-2 Monitor Alias
- 3 Monitor alias enable
- 4-5 VGA boundary. 0: Full access, 1: 512K, 2: 1MB
- 8-13 Monitor code
- 14-15 Host data transfer width. 0: Auto select, 1: 16 bit, 2: 8bit,
- 3: 8bit (host), 16bit (others)
- 0Ah 0-3 Aperture Size (only used Aperture Location is 0)
- 4-15 Aperture Location in Mbytes
- 0Bh 0-7 Interrupt level. 20h: IRQ 5, 28h: IRQ 4, 30h: IRQ 3, 38h: IRQ 2
- 8-15 Mouse address. 0: Mouse disabled, 8: Secondary mouse address,
- 18h: Primary mouse address
- 0Ch - 16h Reserved. The (upto) 7 CRTC parameter tables start at offset
- 17h, 26h, 35h, 44h, 53h, 62h and 71h respectively
-
- CRTC Parameter Table (in EEPROM). All offsets are in WORDs (16bits).
- The tables are different for VGA modes and accelerator modes. Each table is 30
- (1Eh) bytes long
- Offset Bits Description (VGA version)
- 00h 0-7 Video mode select 1
- 8-15 Video mode select 2
- 01h 0-7 CRT refresh rate bit mask
- 8-15 Video mode select 3
- 02h 4 CRT usage. 0: Use sync polarities, 1: use all CRT parameters
- 6 Horizontal sync polarity
- 7 Vertical sync polarity
- 8 Double scan enable
- 9 Interlace enable
- 13 MUX mode enable
- 03h 0-7 H_Total (3d4h index 0)
- 8-15 Max_Scan_Line (3d4h index 9)
- 04h 0-7 Retrace_Strt (3d4h index 4)
- 8-15 H_Retrace_End (3d4h index 5)
- 05h 0-7 V_Retrace_Strt (3d4h index 10h)
- 8-15 V_Retrace_End (3d4h index 11h)
- 06h 0-7 H_Blank_Strt (3d4h index 2)
- 8-15 H_Blank_End (3d4h index 3)
- 07h 0-7 V_Blank_Strt (3d4h index 15h)
- 8-15 V_Blank_End (3d4h index 16h)
- 08h 0-7 V_Total (3d4h index 6)
- 8-15 Crtc_Overflow (3d4h index 7)
- 09h 0-7 CRT_Mode (3d4h index 17h)
- 8-15 V_Disp_End (3d4h index 12h)
- 0Ah 0-3 Ovr_Wid_Left
- 4-7 Ovr_Wid_Right
- 8-11 Crtc_H_Sync_Dly
- 0Bh 0-15 Ovr_Wid_Top, Ovr_Wid_Bottom
- 0Ch 0-15 Ovr_Clr_8, Ovr_Clr_B
- 0Dh 0-15 Ovr_Clr_G, Ovr_Clr_R
- 0Eh 0-15 Reserved
-
-
- Offset Bits Description (Accelerator version)
- 01h 0-7 80h for coprocessor mode
- 8-15 Video mode select
- 02h 8 Double scan enable
- 9 Interlace enable
- 13 MUX mode enable
- 03h 0-7 Crtc_H_Total (M+000h/02ECh bit 0-7)
- 8-15 Crtc_H_Disp (M+000h/02ECh bit 16-23)
- 04h 0-7 Crtc_H_Sync_Strt (M+004h/06ECh bit 0-7)
- 8-15 Crtc_H_Sync_Wid (M+004h/06ECh bit 16-21)
- 05h 0-15 Crtc_V_Total (M+008h/0AECh bit 0-10)
- 06h 0-15 Crtc_V_Disp (M+008h/0AECh bit 16-26)
- 07h 0-15 Crtc_V_Sync_Strt (M+00Ch/0EECh bit 0-10)
- 08h 0-7 Crtc_V_Sync_Width (M+00Ch/0EECh bit 16-21)
- 8-15 Clock_Cntl (M+090h/4AECh bit 0-7)
- 09h 0-15 Dot clock
- 0Ah 0-3 Ovr_Wid_Left (M+044h/26ECh bit 0-3)
- 4-7 Ovr_Wid_Right (M+044h/26ECh bit 16-19)
- 8-11 Crtc_H_Sync_Dly (M+004h/06ECh bit 8-10)
- 0Bh 0-15 Ovr_Wid_Top (M+048h/2AECh bit 0-7), Ovr_Wid_Bottom (M+048h/2AECh
- bit 16-23)
- 0Ch 0-15 Ovr_Clr_8 (M+040h/22ECh bit 0-7), Ovr_Clr_B (M+040h/22ECh bit
- 8-15)
- 0Dh 0-15 Ovr_Clr_G (M+040h/22ECh bit 16-23), Ovr_Clr_R (M+040h/22ECh bit
- 24-31)
- 0Eh 0-15 Reserved
-
-
-
- ID ATI Super VGA Chip Set
-
- if (getbios($31,9)='761295520') and (getbios($40,2)='31') then
- begin
- {ATI_Super_VGA}
- case mem[$C000:$43] of
- $31: ATI 18800;
- $32: ATI 18800-1;
- $33: ATI 28800-2;
- $34: ATI 28800-4;
- $35: ATI 28800-5;
- $36: ATI 28800-6;
- $61,$63: ATI Graphics Ultra Pro/+;
- else unknown_ATI
- end
- end;
-
-
- Video Modes:
- 23h T 132 25 16 (8x14)
- 27h T 132 25 2 (8x14)
- 33h T 132 44 16 (8x8)
- 37h T 132 44 2 (8x8)
- 51h G 640 480 16 PL4 ATI EGA Wonder only
- 52h G 752 410 16 PL4 ATI EGA Wonder only
- 53h G 800 560 16 PL4
- 54h G 800 600 16 PL4
- 55h G 1024 768 16 PL4 (V4 or later)
- 58h T 80 33 16 (8x8)
- 5Bh T 80 30 (8x16)
- 61h G 640 400 256 P8
- 62h G 640 480 256 P8
- 63h G 800 600 256 P8
- 64h G 1024 768 256 P8 V6 (VGA Wonder +) or later
- 65h G 1024 768 16 P4 **** See note
- 67h G 1024 768 4 PL2E **** See note
- 6Ah G 800 600 16 PL4 Undocumented ??
- 72h G 640 480 32k P15 V7 (XL) only
- 73h G 800 600 32k P15 V7 (XL) only
- 75h G 640 480 16m P24 XL24 only
-
- Note: ATI Prism Elite uses a Trident chip and Trident mode numbers.
-
- ATI enhanced Graphics modes do NOT support INT 10h with AH=
- 01h..0Eh or 11h or 13h.
-
-
- Mode 65h 1024x768 16 color
- 4 bits per pixel packed mode
- Even pixel is in bits 0-3 of the byte, odd in bits 4-7.
- The desired 16 colors are in palette registers 00h-0Fh and palette
- register 10h must match register 01h, 20h must match 02h etc.
-
- Mode 67h 1024x768 4 color
- 2 bits per pixel planar mode
- Even pixels are in plane 2&3, odd pixels in plane 0&1.
-
-
- BIOS extensions:
-
- ----------1012--BH55-------------------------
- INT 10 - VIDEO - ALTERNATE FUNC SELECT (ATI,Tatung,Taxan) - ENHANCED FEATURES
- AH = 12h
- BH = 55h
- BL = subfunction
- 00h disabled enhanced features
- 01h enable enhanced features
- 02h get status
- Return: AL = status flags
- bit 3 set if enhanced features enabled
- bits 7-5 monitor type
- 000 PS/2 mono
- 001 PS/2 color
- 010 multi-sync
- 011 Taxan 650 25kHz
- 100 RGB
- 101 mono
- 110 EGA
- 111 Compaq internal
- 03h disable register trapping (CGA emulation)
- 04h enable register trapping
- 05h program mode described by table at ES:BP
- 06h get mode table
- AL = video mode
- BP = FFFFh (Known illegal value).
- SI = 0000h (Known illegal value).
- Return: ES:BP -> table suitable for mode AL (and subfnc BL=05h)
- BP = FFFFh on error
- Note: The support for this function on the Mach64 appears to be very limited.
- Subfunction 06h only supports a few modes, subfunction 02h is not
- implemented.
-
-
- Format of ATI VGA Wonder video mode table:
- Offset Size Description
- 00h BYTE number of columns
- 01h BYTE maximum row (number of rows - 1)
- 02h BYTE scan lines per row
- 03h WORD video buffer size in bytes
- 05h 4 BYTEs values for Sequencer registers 1-4
- 09h BYTE value for Miscellaneous Output register
- 0Ah 25 BYTEs values for CRTC registers 00h-18h
- 00h horizontal total size (chars)
- 01h horizontal displayed (chars)
- 02h horizontal sync position (chars)
- 03h horizontal sync width (chars)
- 04h vertical total size (char rows)
- 05h vertical total adjust (scan lines)
- 06h vertical displayed (char rows)
- 07h vertical sync position (char rows)
- 08h interlace mode
- 09h max scan line in row
- 0Ah cursor start scan line
- 0Bh cursor end scan line
- 0Ch screen memory start (high)
- 0Dh screen memory start (low)
- 0Eh cursor address (high)
- 0Fh cursor address (low)
- 10h light pen (high)
- 11h light pen (low)
- 23h 20 BYTEs default palette (values for Attribute Controller regs
- 00h-13h)
- 37h 9 BYTEs values for Graphics Controller registers 00h-08h
- ----------10A0-----------------------------------
- INT 10 - VIDEO - Mach64
- AH = A0h
-